目录
1,DQL介绍
DQL英文全称是Data Query Language(数据库查询语言),数据查询语言,用来查询数据库中表的记录。
查询关键字:SELECT
2,DQL语法
SELECT 字段列表 | 4 |
FROM 表名列表 | 1 |
WHERE 条件列表 | 2 |
GROUP BY 分组字段列表 | 3 |
HAVING 分组后条件列表 | |
ORDER BY 排序字段列表 | 5 |
LIMIT 分页参数 | 6 |
这里的数字123456指的是语句执行顺序。
3,DQL的各种查询语句
(1)基本查询
--基本查询
--查询多个字段
--查询想要的字段,只将查询字段的记录显示在控制台
select 字段1, 字段2, 字段3, ... from 表名;
--例:select name, age from emp;
--查询表的所有字段,将表的所有记录显示在控制台
select * from 表名;
--例:select * from emp;
--设置别名
select 字段1 [as 别名], 字段2 [as 别名] ... from 表名;
--例:select id as '编号' from emp;
--去除重复记录
select distinct 字段列表 from 表名;
--例:select distinct workno form emp;
(2)条件查询
--语法
select 字段列表 from 表名 where 条件;
--例:select * from emp where age < 20;
这里的条件主要有比较运算符和逻辑运算符
比较运算符 | 功能 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
<>或!= | 不等于 |
between...and... | 在某个范围值之内(含最大值,最小值) |
in(...) | 在in之后的列表中的值,多选一 |
like 占位符 | 模糊匹配(_匹配单个字符, %匹配任意个字符) |
is null | 是null |
逻辑运算符 | 功能 |
and 或 && | 并且(多个条件同时成立) |
or 或 || | 或者(多个条件任意一个成立) |
not 或 ! | 非,不是 |
注:在使用between...and...语法时,必须是between 最小值 and 最大值。
(3)聚合函数
介绍:将一列数据作为一个整体,进行纵向计算。
函数 | 功能 |
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
语法:
--语法
select 聚合函数(字段列表) from 表名;
--count
--例:select count(*) from emp;
--max
--例:select max(age) from emp;
--min
--例:select min(age) from emp;
--avg
--例:select avg(age) from emp;
--sum
--例:select sum(age) from emp;
(4)分组查询
--语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
--例:select gender, count(gender) from employee group by gender;
where和having的区别:
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。
注:
执行顺序:where > 聚合函数 > having。
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
(5)排序查询
--语法
select 字段列表 from 表名 order by 字段1 排序方式1, 字段2 排序方式2...;
--例:select name, age form emp where age > 15 order by age asc;
--排序方式
--asc 升序(默认)
--desc 降序
--注:如果是多字段排序,当第一个字段值相同时,才会跟第二个字段进行排序。
(6)分页查询
--语法
select 字段列表 from 表名 limit 起始索引, 查询记录数;
--例:select * from emp where age between 20 and 40 and gender = '男' order by age asc having entrytime asc limit 5;
--注:
--起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数。
--分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
--如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10;