SQL数据查询语言-DQL

SQL 基本语法-DML

SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言,主要分为以下几类:

  • DDL(数据定义语言):定义数据库对象(如数据库、表、字段)。
  • DML(数据操作语言):操作表中的数据(增、删、改)。
  • DQL(数据查询语言):查询表中的记录。
  • DCL(数据控制语言):管理用户权限和数据库安全。

DQL(Data Query Language)

DQL 英文全称是 Data Query Language(数据查询语言),用来查询数据库表中的记录。

DQL 语句

完整的 DQL 查询 语句语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
  • 基本查询(select…from…)
  • 条件查询(where)
  • 分组查询(group by)
  • 排序查询(order by)
  • 分页查询(limit)

DQL - 基本查询

1
2
3
4
5
6
7
8
-- 查询多个字段
select 字段1,字段2,字段3 from 表名;
-- 查询所有字段(通配符)
select * from 表名;
-- 为查询字段设置别名,as关键字可以省略
select 字段1 [as 别名1], 字段2 [as 别名2] from 表名 [as 别名3];
-- 去除重复记录
select distinct 字段列表 from 表名 ;

\* 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。
如果 遇到 比较复杂的单表问题 , 没有思路,可以 使用 as 别名 转换成 多表

DQL-条件查询

1
select 字段列表 from 表名 where 条件列表 ;
比较运算符&&逻辑运算符
比较运算符功能
>大于
>=大于等于
<小于
<= 小于等于
=等于
<>!=不等于
betweenand在某个范围之内(含最小、最大值)
in(...)在 in 之后的列表中的值,多选一
like 占位符模糊匹配(_匹配单个字符, %匹配任意个字符)
is null是 null
逻辑运算符功能
and&&并且 (多个条件同时成立)
or||或者 (多个条件任意一个成立)
not!非 , 不是

DQL-分组查询

1
2
3
-- 分组查询
select 字段列表 from 表名 [where 条件列表] group by 分组字段名 [having 分组后过滤条件];

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

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

case when then

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

DQL-排序查询

1
2
-- 排序查询
select 字段列表 from 表名 [where 条件列表] [group by 分组字段名 having 分组后过滤条件] order by 排序字段 排序方式;
  • 排序方式:升序(asc),降序(desc);默认为升序 asc,是可以不写的。

如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

DQL-分页查询

1
2
-- 排序查询
select 字段 from 表名 [where 条件] [group by 分组字段 having 过滤条件] [order by 排序字段] limit 起始索引,查询记录数;
  • 说明:
    • 起始索引从 0 开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
    • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL 中是 LIMIT。
    • 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。

DCL(Data Control Language)

数据控制语言,用来创建数据库用户、控制数据库的访问权限。