DQL-语法
SELECT | 字段列表 |
FROM | 表名列表 |
WHERE | 条件列表 |
GROUP BY | 分组字段列表 |
HAVING | 分组后条件列表 |
ORDER BY | 排序字段列表 |
LIMIT | 分页参数 |
查询关键字:SELECT
①DQL-基本查询:
/*1.查询多个字段*/
SELECT 字段1,字段2,字段3... FROM 表名;
SELECT * FROM 表名;
/*2.设置别名*/
SELECT 字段1 [AS 别名1],字段2[AS 别名2]... FROM 表名;
/*3.去除重复记录*/
SELECT DISTINCT 字段列表 FROM 表名;
②DQL-条件查询:
1.语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
2.条件
比较运算符 | 功能 |
>,<,>=,<=,=,<>或!= | 大于、小于、大于或等于......不等于 |
BETWEEN...AND... | 在某个范围之内(闭区间) |
IN(......) | 在in之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意字符) |
IS NULL | 是空值 |
逻辑运算符 | 功能 |
AND 或 && | 且 |
OR 或 || | 或 |
NOT 或 ! | 非 |
③DQL-分组查询:
聚合函数:将一列数据作为整体进行纵向运算。
常见聚合函数如下
函数 | 功能 |
count | 统计数量 |
max | 求最大值 |
min | 求最小值 |
avg | 求平均值 |
sum | 求和 |
聚合函数使用语法:
SELECT count(id) from employee;
注:所有NULL值不参与聚合函数运算。
分组查询:
1.语法
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
2.WHERE中不可使用聚合函数,但HAVING中可以。
④DQL-排序查询:
1.语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;......
/*支持多字段排序,代码先后表示排序优先级*/
2.排序方式
asc | 升序排序(默认) |
desc | 降序排序 |
⑤DQL-分页查询:
1.语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
起始索引:起始索引从0开始,起始索引 = (查询页码 -1)*每页显示记录数。
若查询的是第一页数据,则起始索引可省略,直接简写为 limit 10。
DQL语句总练习:
/*--1.查询年龄为20,21,22,23岁的女性员工信息--*/
select * from emp where gender = '女' and age in (20,21,22,23);
/*--2.查询性别为男,且年龄在20-40岁的姓名为三个字的员工信息--*/
select * from emp where gender = '男' and age between 20 and 40 and name like '___';
/*--3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数--*/
select gender,count(*) from emp where age < 60 group by gender;
/*--4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,
如果年龄相同按入职时间降序排序--*/
select name,age from emp where age <= 35 order by asc ,entrydate desc;
/*--5.查询性别为男,且年龄在20-40岁的前5个员工信息,对查询结果按年龄升序排序,
如果年龄相同按入职时间升序排序--*/
select * from emp where gender = '男' and age between 20 and 40 order by asc ,entrydate asc limit 5;
DQL语句的执行顺序:FROM WHERE,GROUP BY,HAVING,SELECT,ORDER BY,LIMIT