目录
1,DQL语句----介绍
DQL英文全称是 Data Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
查询关键字:SELECT
2,DQL语句----语法
SELECT 字段列表
FROM 表名列表
WHERE 条件列表
GROUP BY 分组字段列表
HAVING 分组后条件列表
ORDER BY 排序字段列表
LIMIT 分页参数
2.1DQL语句----基本查询
1, 查询多个字段:
SELECT 字段1, 字段2, 字段3 … FROM 表名;
SELECT * FROM 表名;2, 设置别名:
SELECT 字段1[AS 别名1], 字段2[AS 别名2] … FROM 表名;3,去除重复记录
SELECT DISTINCT 字段列表 FORM 表名;
表tb_user
id | name | age | gender |
---|---|---|---|
1 | itheima | 10 | 男 |
2 | huaqing | 20 | 女 |
3 | lifusheng | 26 | 男 |
4 | hanhan | 30 | 男 |
【示例:】
----1,查询指定字段,name , age ,gender
答案: select name,age,gender from tb_user;
----2,查询所有字段
答案:select * from tb_user;
----3,查询所有员工的年龄,起别名
答案:select age as ‘年龄’ from tb_user;
----4,查询公司员工的年龄(不要重复)
答案:select distinct age from tb_user;
2.2 DQL语句----条件查询(WHERE)
SELECT 字段列表 FROM 表名 WHERE 条件列表;
【示例:】
----1,查询年龄等于10的员工
答案:select * from tb_user where age = 10;
----2,查询年龄小于 26 的员工信息
答案:select * from tb_user where age < 26;
----3,查询年龄小于等于 26 的员工信息
答案:select * from tb_user where age <= 26;
----4,查询年龄不等于 26 的员工信息
答案:select * from tb_user where age != 26;
----5, 查询年龄为空的员工信息
答案:select * from tb_user where age is null;
----6, 查询年龄不为空的员工信息
答案:select * from tb_user where age is not null;
----7,查询年龄在 15岁(包含)到 20岁(包含)之间的员工信息
答案:select * from tb_user where age >= 15 && age <= 20;
select * from tb_user where age >= 15 and age <= 20;
select * from tb_user where age between 15 and 20;
----8,查询年龄等于 10 或 20 或 26 的员工信息
答案:select * from tb_user where age = 10 or age = 20 or age = 26;
select * from tb_user where age in(10,20,26);
2.3 DQL语句----聚合函数(count, max, min, avg, sum)
1,聚合函数介绍 :
将一列数据作为一个整体,进行纵向计算。
2,常见聚合函数
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
这些聚合函数都是针对表的某一列的。
3,语法
SELECT 聚合函数(字段列表) FROM 表名;
【示例:】
----1,统计该企业员工数量
答案:select count(*) from tb_user;
select count(age) from tb_user;
----2,统计该企业员工的平均年龄
答案:select avg(age) from tb_user;
----3,统计该企业员工的最小年龄
答案:select min(age) from tb_user;
----4,统计该企业员工的最大年龄
答案:select max(age) from tb_user;
2.4 DQL语句----分组查询
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
where 与 having 区别
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组,而having是分组之后对结果进行过滤。
判断你条件不同:where不能对聚合函数进行判断,而having可以。
【示例:】
----1,根据性别分组,统计男性员工和女性员工的数量
答案:select gender,count(*) from tb_user group by gender;
----2,根据性别分组,统计男性员工和女性员工的平均年龄
答案:select gender , avg(age) from tb_user group by gender;
----3,查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
答案:select workaddress , count(*) from tb_user where age < 45 group by workaddress;
2.5 DQL语句----排序查询
1,语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
2,排序方式
ASC: 升序(默认值)
DESC: 降序
【示例:】
----1,根据年龄对公司的员工,进行升序排序
答案:select * from tb_user order by age asc;
select * from tb_user order by age desc;
----2,根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序
答案:select * from tb_user order by age asc , entrydate desc;
2.6 DQL语句----分页查询
SELECT 字段列表 FROM 表名 LIMT 起始索引 , 查询记录数;
【注意】
1, 起始索引从 0 开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
2,分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是 LIMIT。
3, 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10;
【示例:】
----1,查询第一页员工数据,每页展示 1 条记录
答案: select * from tb_user limit 0,1;
----2,查询第 2 页员工数据,每页展示 1 条记录
答案: select * from tb_user limit 1,1;