Skip to content

数据查询语言 ​

定义 ​

Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录

基本语法

sql
SELECT
	字段列表
FROM
	表名列表
WHERE
	条件列表
GROUP BY
	分组字段列表
HAVING
	分组后条件列表
ORDER BY
	排序字段列表
LIMIT
	分页参数

基础查询 ​

查询多个字段

sql
SELECT 字段1, 字段2, 字段3 ... FROM 表名;

SELECT * FROM 表名 ;

*号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)

字段设置别名

sql
SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
-- AS可以省略
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;

去除重复记录

sql
SELECT DISTINCT 字段列表 FROM 表名;

条件查询 ​

语法

sql
SELECT 字段列表 FROM 表名 WHERE 条件列表;

常用的比较运算符

比较运算符功能
>大于
>=等于
<于
<=等于
=等于
<> 或 !=不等于
BETWEEN ... AND ...在某个范围之内(含最小、最大值)
IN(...)在in之后的列表中的值,多选一
LIKE 占位符模糊匹配 ( _匹配单个字符, %匹配任意个字符 )
IS NULL是NULL

常用的逻辑运算符

逻辑运算符功能
AND 或 &&并且 (多个条件同时成立)
OR 或 ||或者 (多个条件任意一个成立)
NOT 或 !非 , 不是

聚合函数 ​

将一列数据作为一个整体,进行纵向计算 。

常见的聚合函数

函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

语法

sql
SELECT 聚合函数(字段列表) FROM 表名;

NULL值是不参与所有聚合函数运算的。

对于count聚合函数,统计符合条件的总记录数

按照效率排序的话,count(字段) < count(主键 id) < count(1) ≈ count(*)

所以尽量使用 count(*)

分组查询 ​

sql
SELECT 
	字段列表 
FROM 表名 
	[ WHERE 条件 ] 
GROUP BY 
	分组字段名 
	[ HAVING 分组后过滤条件 ];

where与having区别

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。

注意事项

  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
  • 执行顺序: where > 聚合函数 > having
  • 支持多字段分组, 具体语法为 : group by columnA, columnB

排序查询 ​

排序在日常开发中是非常常见的一个操作,有升序排序,也有降序排序。

语法

SQL
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;

排序方式

  • ASC:升序(默认值)
  • DESC:降序

注意事项

  • 如果是升序, 可以不指定排序方式ASC
  • 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

分页查询 ​

语法

sql
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;

注意事项

  • 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。

执行顺序 ​

An image