资料
根据【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!】 整理
资料链接:
百度网盘:
链接:https://pan.baidu.com/s/1KboU_3EZJxrezMWZ2klP6g
提取码:1234
阿里云盘
1 排序数据
如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序显示的。
使用 ORDER BY 子句排序。
- ASC(ascend): 升序
- DESC(descend):降序
ORDER BY 子句在SELECT语句的结尾。
按照salary从高到低的顺序显示员工信息
# 按照salary从高到低的顺序显示员工信息 SELECT employee_id,last_name,salary FROM employees ORDER BY salary DESC;
按照salary从低到高的顺序显示员工信息
# 按照salary从低到高的顺序显示员工信息 SELECT employee_id,last_name,salary FROM employees ORDER BY salary ASC;
如果在ORDER BY 后没有显式指名排序的方式的话,则默认按照升序排列。
# 按照salary从低到高的顺序显示员工信息 SELECT employee_id,last_name,salary FROM employees ORDER BY salary;
我们可以使用列的别名,进行排序
SELECT employee_id,last_name,salary*12 AS annual_sal FROM employees ORDER BY annual_sal ASC;
列的别名不能在WHERE中使用
SELECT employee_id,last_name,salary*12 AS annual_sal FROM employees WHERE annual_sal >20000 ORDER BY annual_sal ASC;
[42S22][1054] Unknown column ‘annual_sal’ in ‘where clause’
与语句的执行顺序有关
查询语句会先执行 from 子句
然后执行 where 子句
再执行 select 子句,字段的别名在select子句定义声明
所以在where子句中列还未有别名,列的别名不能再where中使用
然后执行其他子句
别名的使用只能在别名声明之后
强调格式:WHERE 需要声明在FROM后,ORDER BY之前。
排序的依据字段可以不是查询的字段
SELECT employee_id,salary FROM employees WHERE department_id IN (50,60,70) ORDER BY department_id DESC;
2 多级排序
显示员工信息,按照department_id的降序排列,salary的升序排列
# 显示员工信息,按照department_id的降序排列,salary的升序排列 SELECT employee_id,salary,department_id FROM employees ORDER BY department_id DESC, salary ASC;
在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第一列数据中所有值都是唯一的,将不再对第二列进行排序。
3 分页
所谓分页显示,就是将数据库中的结果集,一段一段显示出来需要的条件。
MySQL中使用 LIMIT 实现分页
语法:
SELECT 字段 FROM 表名 [ WHERE 条件 ] [ ORDER BY 排序条件 ] LIMIT [位置偏移量, ] 行数
第一个“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);第二个参数“行数”指示返回的记录条数。
每页显示20条记录,此时显示第1页:
SELECT employee_id, last_name FROM employees LIMIT 0, 20; # 或 # 结构"LIMIT 0,条目数" 等价于 "LIMIT 条目数" SELECT employee_id, last_name FROM employees LIMIT 20;