- Data Query Language(数据查询语言),用来查询数据库中表的记录
DQL-基本查询
DQL-条件查询(WHERE)
sql
-- 查询姓名为2个字的员工信息
select * from emp where name like '__';
-- 查询身份证号最后一位是X的员工信息
select * from emp where idcard like '%X';
select * from emp where idcard like '_________________X';
DQL-聚合函数
sql
-- 1.统计该企业员工数量
select count(*) from emp;
select count(idcard) from emp;
-- 2.统计该企业员工的平均年龄
select avg(age) from emp;
-- 3.统计企业员工的最大,最小年龄
select max(age) from emp;
select min(age) from emp;
-- 4.统计西安地区员工的年龄之和
select sum(age) from emp where workno = '西安';
DQL-分组查询(GROUP BY)
sql
-- 分组查询
-- 1.根据性别分组 , 统计男性员工 和女性员工的数量
select gender , count(*) from emp group by gender;
-- 2.根据性别分组 , 统计男性员工 和 女性员工的平均值
select gender , avg(age) from emp group by gender;
-- 3.查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址
select workaddress ,count(*) from emp where age < 45 group by workaddress having count(*) >= 3;
注意事项:
- 执行顺序:where > 聚合函数 > having
- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
DQL-排序查询(ORDER BY)
sql
-- 排序查询
-- 1.根据年龄对公司的员工进行升序排序
select * from emp order by age asc ;
-- 2.根据入职时间,对员工进行降序排序
select * from emp order by entrydate desc ;
-- 3.根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序
select * from emp order by age asc , entrydate desc ;
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序
DQL-分页查询(LIMIT)
sql
-- 分页查询
-- 1.查询第1页员工数据,每页展示10条记录
select * from emp limit 0 , 10;
select * from emp limit 10;
-- 2.查询第2页员工数据,每页展示10条数据 -----> (页码 - 1) * 页展示记录数
select * from emp limit 10,10;
注意事项:
- 起始索引从0开始,起始索引 = (查询页码-1)*每页显示记录数
- 如果查询的是第一页数据,可以直接写成limit10
- 分页查询是数据库的方言
案例练习
sql
-- 查询年龄为20,21,22,23的女性员工信息
select * from emp where gender = '女' and age in(20,21,22,23);
-- 查询男性年龄在20-30岁以内姓名为三个字的员工
select * from emp where gender = '男' and ( age between 20 and 30 ) and name like '___';
-- 统计员工表中,年龄小于60岁的, 男性员工和女性员工的人数
select gender ,count(*) from emp where age < 60 group by gender ;
-- 查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
select name , age from emp where age <= 35 order by age asc , entrydate desc ;
-- 查询性别为男,且年龄在20-40岁以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序
select * from emp where gender = '男' and ( age between 20 and 40 ) order by age asc , entrydate asc limit 5 ;
DQL-执行顺序
里面的age和name字段可以使用别名
sql
-- 查询年龄大于15的员工的姓名、年龄、并根据年龄进行升序排序
select e.name ename ,e.age eage from emp e where e.age > 15 order by eage asc ;