123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #第五章、排序与分页
- #1、排序
- #如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序显示的。
- #练习:按照salary从高到低的顺序显示员工信息
- #1.1、基本使用
- #使用 ORDER BY 对查询到的数据进行排序操作。
- #升序:ASC(ascend)
- #降序:DESC(descend)
- #如果在 ORDER BY 后没有显式指明排序的方式的话,则默认按照升序排列。
- SELECT employee_id,last_name,salary
- FROM employees
- ORDER BY salary DESC;
- #1.2、我们可以使用列的别名,进行排序
- SELECT employee_id,salary,salary*12 annual_sal
- FROM employees
- ORDER BY annual_sal;
- #列的别名只能在 ORDER BY 中使用,不能在WHERE中使用。
- #如下操作报错
- SELECT employee_id,salary,salary*12 annual_sal
- FROM employees
- WHERE annual_sal > 81600;
- #1.3、强调格式:WHERE需要声明在FROM后,ORDER BY之前。
- SELECT employee_id,salary
- FROM employees
- WHERE department_id IN(50,60,70)
- ORDER BY department_id DESC;
- #1.4、二级排序
- #练习:显示员工信息,按照department_id的降序排列,salary的升序排列
- SELECT employee_id,salary,department_id
- FROM employees
- ORDER BY department_id DESC,salary ASC; #ASC可以省略
- #2、分页
- #2.1、MySQL使用LIMIT实现数据的分页显示
- #需求1:每页显示20条记录,此时显示第1页
- SELECT employee_id,last_name
- FROM employees
- LIMIT 0,20;
- #需求2:每页显示20条记录,此时显示第2页
- SELECT employee_id,last_name
- FROM employees
- LIMIT 20,20;
- #需求3:每页显示20条记录,此时显示第3页
- SELECT employee_id,last_name
- FROM employees
- LIMIT 40,20;
- #需求:每页显示pageSize条记录,此时显示第pageNo页
- #公式:LIMIT (pageNo-1)*pageSize,pageSize;
- #2.2、WHERE ... ORDER BY ... LIMIT声明顺序如下:
- #LIMIT的格式:严格来说,应该是:LIMIT 位置偏移量,条目数
- #结构“LIMIT 0,条目数”等价于“LIMIT 条目数”
- SELECT employee_id,last_name,salary
- FROM employees
- WHERE salary > 6000
- ORDER BY salary DESC
- #LIMIT 0,10;
- LIMIT 10;
- #ORDER BY和LIMIT都是垫底的,并且ORDER BY在LIMIT的前面
- #练习:表里有107条数据,我们只想要显示第32、33条数据怎么办?
- SELECT employee_id,last_name
- FROM employees
- LIMIT 31,2;
- #2.3MySQL8.0新特性:LIMIT ... OFFSET ...
- #练习:表里有107条数据,我们只想要显示第32、33条数据怎么办?
- SELECT employee_id,last_name
- FROM employees
- LIMIT 2 OFFSET 31;
- #练习:查询员工表中工资最高的员工信息
- SELECT employee_id,last_name,salary
- FROM employees
- ORDER BY salary DESC
- #LIMIT 0,1;
- LIMIT 1;
- #2.4、LIMIT可以适应在MySQL、PGSQL、MariaDB、SQLite等数据库中使用,表示分页
- #不能使用在SQL Server、DB2、Oracle
|