DQL--数据查询语言
谓词:select
查询数据
基本语法
select 字段列表 from 表名列表 -- 基础查询
where 条件列表 -- 条件查询
group by 分组字段 -- 分组查询
having 分组后条件
order by 排序字段 -- 排序查询
limit 分页限定 -- 分页查询
基础查询
查询多个字段
select 字段列表 from 表名; -- select name,age from student;
select * from 表名; -- 查询所有数据
去除重复记录
select distinct 字段列表 from 表名;
起别名
as 别名 -- as也可以省略,原名和别名用空格隔开,例如:select name as 姓名 from student;
条件查询
基本语法:
select 字段列表 from 表名 where 条件列表;
条件
符号 | 功能 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
between...and... | 在某个范围之内(都包含) |
in(...) | 多选一 |
like 占位符 | 模糊查询,_单个任意字符,%多个任意字符 |
is null | 是null |
is not null | 不是null |
and 或 && | 并且 |
or 或 || | 或者 |
not 或! | 非,不是 |
对于null值,需要使用is或者not,而不能使用=,即不能写where salary = null;
in(参数1,参数2,...)相当于多个=和and的使用
对于like,使用通配符进行模糊查询
- _ 代表单个任意字符,例如查询名字中含有媛君的人的信息的条件为:_媛君
- % 代表任意个数字符,查询姓庞的人大的信息的条件为:张%
分组查询
聚合函数:将一列数据作为一个整体,进行纵向计算。
常用聚合函数;
符号 | 功能 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
between...and... | 在某个范围之内(都包含) |
in(...) | 多选一 |
like 占位符 | 模糊查询,_单个任意字符,%多个任意字符 |
is null | 是null |
is not null | 不是null |
and 或 && | 并且 |
or 或 || | 或者 |
not 或! | 非,不是 |
聚合基本语法
select 聚合函数名(列名) from 表名;
注意null值不参与所有聚合函数运算,评估null值的现实意义即现实意义是否为0,会对聚合结果产生现实影响
count() 只能统计非空的数据,为空的数据会被忽略掉
使用count()统计数量:
主键: 主键非空且唯一 * : count(*)可以统计数量,除非存在某项数据什么数据都没有才会忽略不做统计(实际上本就是不存在的行)
分组查询基本语法
select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];
注意,分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
where和having区别:
执行时机不一样:where是分组之前的限定,不满足条件不参与分组;having是分组之后对结果进行过滤
可判断的条件不一样: where不能对聚合函数进行判断;having则可以,原因在于三者的执行顺序
执行顺序: where > 聚合函数 > having
排序查询
基本语法
select 字段列表 from 表名 order by 排序字段名1 [排序方式1],排序字段名2 [排序方式2]...;
排序方式
- asc 升序排列(默认值)
- desc 降序排列
如果有多个排序条件,当前面的条件值一样时,才会根据第二条件进行排序
分页查询
基本语法
select 字段列表 from 表名 limit 起始索引,查询条目数;
例:select * from student limit 6,3;
即从第7个数据开始查询,每页显示3条数据
起始索引 从0开始
计算公式 起始索引 = (当前页面 - 1)* 每页显示的条数
MySQL分页查询使用limit
Oracle使用rownumber
SQL Sever使用top
网友评论