分页查询 limit
格式: limit 跳过的条数,请求的条数(每页的条数)
跳过的条数=(请求的页数-1)*每页的条数
举例:
○ 第1页的5条数据 limit 0,5
○ 第2页的5条数据 limit 5,5
○ 第3页的5条数据 limit 10,5
○ 第4页的10条数据 limit 30,10
○ 第8页的7条数据 limit 49,7
○ 第3页的9条数据 limit 18,9
- 查询id,姓名,工资和工作,按照工资升序排序 请求第1页的5条数据
select id,name,sal,job from emp order by sal limit 0,5;
- 查询所有员工的姓名和工资,按照工资升序排序,请求第2页的5条数据
select name,sal from emp order by sal limit 5,5;
- 查询工资最高的员工信息
select * from emp order by sal desc limit 0,1;
- 按照入职日期排序 查询第2页的3条数据
select * from emp order by hiredate limit 3,3;
- 按照工资升序排序查询第3页的2条数据
select * from emp order by sal limit 4,2;
别名
select name as '姓名' from emp;
select name '姓名' from emp;
select name 姓名 from emp;
综合练习题
1. 查询员工表中 3 号部门工资高于 1500 的员工信息
select * from emp where dept_id=3 and sal>1500;
2. 查询 2 号部门员工或者没有领导的员工信息
select * from emp where dept_id=2 or manager is null;
3. 查询有领导的员工姓名,工资按照工资降序排序
select name,sal from emp where manager is not null order by sal desc;
4. 查询 2 号和 3 号部门的员工姓名和入职日期 hiredate 按照入职日期降序排序
select name,hiredate from emp where dept_id in(2,3) order by hiredate desc;
5. 查询名字中包含僧和包含精的员工姓名
select name from emp where name like "%僧%" or name like "%精%";
6. 查询工资高于 2000 的工作有哪几种?
select distinct job from emp where sal>2000;
7. 查询工资升序第 4 页的 2 条数据
select * from emp order by sal limit 6,2;
聚合函数
- 可以对查询的多条数据进行统计查询, 统计方式包括:求平均值,求最大值,求最小值,求和,计数
1. 平均值avg(字段名)
- 查询1号部门的平均工资
select avg(sal) from emp where dept_id=1;
2. 最大值max(字段名)
- 查询2号部门的最高工资
select max(sal) from emp where dept_id=2;
3. 最小值min(字段名)
- 查询2号部门的最低工资
select min(sal) from emp where dept_id=2;
4. 求和sum(字段名)
- 查询3号部门的工资总和
select sum(sal) from emp where dept_id=3;
5. 计数count(*)
- 查询1号部门的人数
select count(*) from emp where dept_id=1;
聚合函数练习题:
1. 查询销售的平均工资
select avg(sal) from emp where job='销售';
2. 查询程序员的最高工资
select max(sal) from emp where job='程序员';
3. 查询名字中包含精的人数
select count(*) from emp where name like "%精%";
4. 查询和销售相关的工作,工资总和是多少
select sum(sal) from emp where job like "%销售%";
5. 查询2号部门的最高工资和 最低工资 起别名
select max(sal) 最高工资,min(sal) 最低工资 from emp where dept_id=2;
分组查询
- 可以将某个字段相同值的数据划分为一组, 然后以组为单位进行统计查询
1. 查询每个部门的平均工资
select dept_id,avg(sal) from emp group by dept_id;
2. 查询每个部门的人数
select dept_id,count(*) from emp group by dept_id;
3. 查询每种工作的人数
select job,count(*) from emp group by job;
4. 查询每个部门工资高于 2000 的人数
select dept_id,count(*) from emp where sal>2000 group by dept_id;
5. 查询 1 号部门和 2 号部门的人数
select dept_id,count(*) from emp where dept_id in(1,2) group by dept_id;
6. 查询平均工资最高的部门 id 和平均工资
- select dept_id,avg(sal) from emp group by dept_id order by avg(sal) desc limit 0,1;
- select dept_id,avg(sal) a from emp group by dept_id order by a desc limit 0,1;