SQL、HQL、JPQL、CQL的对比

       SQL:全称结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件扩展名

       HQL:HQL(Hibernate Query Language)查询相对于Criteria查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装。

       JPQL:在JAVA EE中,JPQL是专门为Java 应用程序访问和导航实体实例设计的。Java Presistence Query Language(JPQL),java持久性查询语言。JPQL就是一种查询语言,具有与SQL 相类似的特征,JPQL是完全面向对象的,具备继承、多态和关联等特性,和Hibernate HQL很相似。

       CQL:全称为 Cloud Query Language,是 一套类似 SQL 查询语法的子集和变种,其目的是让开发者可以使用传统的 SQL 语法来查询 LeanCloud 云端数据,从而减少学习 LeanCloud 查询 API 的成本。

       不同点对比

       1、SQL与HQL

                sql 面向数据库表查询
                hql 面向对象查询
                hql :from 后面跟的 类名+类对象    where 后 用 对象的属性做条件
                sql: from 后面跟的是表名                where 后 用表中字段做条件
                查询: 在Hibernate中使用查询时,一般使用Hql查询语句,使用HQL时需要注意以下几点:
               (1)大小写敏感。因为HQL是面向对象的,而对象类的名称和属性都是大小写敏感的,所以HQL是大小写敏感的。
                 如:HQL语句:from Cat as cat where cat.id > 1;与from Cat as cat where cat.ID > 1;是不一样的,这点与SQL不同。
               (2) from子句。from Cat,该句返回Cat对象实例,开发人员也可以给其加上别名,eg. from Cat as cat。对于多表查询的情况,可参考如下:
from Cat as cat, Dog as dog。

       2、SQL与JPQL

            JPQL是面向对象的查询语言,因此它可以完全理解继承、多态和关联等特征。而且JPQL内置了大量函数,极大地方便了JPQL查询的功能。当然JPQL底层依然是基于SQL的,但JPQL到SQL的转换无须开发者关心,JPQL解析器会负责完成这种转换,并负责执行这种转换的SQL语句来更新数据库。 
            SQL是面向关系数据库的查询语言,因此SQL操作的对象是数据表、数据列;而JQPL操作的对象是实体对象,对象属性。

                

      3、SQL与CQL:CQL与SQl的差异主要体现在以下几点:  

  • 不支持在 select 中使用 as 关键字为列增加别名。
  • update 和 delete 不提供批量更新和删除,只能根据 objectId(where objectId=xxx)和其他条件来更新或者删除某个文档。
  • 不支持 join,关联查询提供 includerelatedTo 等语法来替代(关系查询)。
  • 仅支持部分 SQL 函数(内置函数)。
  • 不支持 group byhavingmaxminsumdistinct 等分组聚合查询语法。
  • 不支持事务。
  • 不支持锁。

       本文参考于:https://blog.csdn.net/zt15732625878/article/details/78378995?foxhandler=RssReadRenderProcessHandler

                            https://leancloud.cn/docs/cql_guide.html#hash-906021636

猜你喜欢

转载自www.cnblogs.com/fancy-dawning/p/9058101.html
今日推荐