本文已参与「新人创作礼」活动,一起开启掘金创作之路。
SQL、HQL、JPQL 到底有什么区别
SQL 是可以操作数据库的。
HQL 是 Hibernate 框架实现的,是 对象关系查询语言。
JPQL 是 以 HQL 为原型,是 完全面向对象的查询语言。
本文参考:SQL、HQL、JPQL、CQL的对比
SQL(Structured Query Language)即:结构化查询语言,是 关系数据库的 查询语句。
-
即:可以用此语言去操作数据库。处理对象是
数据库的表、表字段。 -
SQL Server、MySql、Oracle 这三个常用的关系型数据都是使用 SQL 语句来查询数据的,可以有些许不同,但大体结构是不变的。
-
以 MySql 数据库的 SQL 的
结构为例,字句的编写顺序以下面的列表为准。-
SELECT 字句,
必须,用于规定查询的表的哪几个属性,必须大于等于一个。 -
FROM 字句,
必须,用于引入表,连表查询也是在这里引入表。 -
WHERE 字句,
非必须,用于指定查询条件。 -
GROUP BY 字句,
非必须,用于分组。 -
ORDER BY 字句,
非必须,用于排序。 -
注意:字句后跟的都是 表名 或 表字段名 或 函数。
-
-
例子:
SELECT article_id, article_type FROM article GROUP BY article_type ORDER BY article_type
article_id 和 article_type 是数据表 article 的字段。
-
大小写不敏感。MySql 中,表名和属性名都要小写的,默认将 SQL中的属性名、表名 转为 小写。
-
下面的 查询语言用于查询时,都需要转为 SQL 语言。
HQL(Hibernate Query Language)即:对象关系查询语言,是 Hibernate 框架生成的查询语句。
-
只有 Hibernate 框架可以解析,Hibernate 框架当然有相应的解析器将其转换成 SQL 语言。
-
处理对象是
JPA 实体、实体属性。 -
大小写敏感,和 Java 一样。
-
查询语句中,FROM 等字句后跟的都是 类名 或 类属性名 或 类对象。
-
与 SQL 的比较
-
结构上与 SQL 没有太大的区别。
-
SELECT 等字句后添加的 表字段、表 替换成了 类属性、类名。
-
JPQL 即:面向对象的查询语言,
-
原型是 HQL,JPQL 极其相似 HQL。
-
JPQL 到 SQL 的转换 JPQL 解析器会负责完成。
-
处理对象是
JPA 实体、实体属性。 -
它能够彻底理解继承、多态和关联等特征,并且 JPQL 内置了大量函数,极大地方便了 JPQL 查询的功能。
-
JPQL 底层依然是基于 SQL 的。
-
与 SQL 的比较
-
结构上与 SQL 没有太大的区别。
-
SELECT 等字句后添加的 表字段、表 替换成了 类属性、类名。
-
关联表的连接方式只有:内连接、左外连接。
-
支持 删、查、改 操作。
-
(首发)如果对你有帮助,点赞可好!!