赞
踩
1.1排序规则:
MYSQL 数字排序使用:ORDER BY.... 子句
ORDER BY 列名 ASC 升序
ORDER BY 列名 DESC降序
升序 : ASC (ASCEND) 升序从小到大,或者从高到底
降序: DESC(DESCENG) 升序从大到小,或者从低到高

1.2单列排序 (一级排序)
希望按照salary 从高到低的顺序显示员工信息
SELECT employee_id,last_name ,salary
FROM employees
ORDER BY salary DESC;
执行结果:

1.3 多级排序(2 ....3....)
一级排序不能满足我们的任务要求,需要再以某个字段进行排序。
语法:SELECT employee_id,last_name ,salary
FROM employees
ORDER BY 列名1 ASC, 列名2 DESC;
#在原有的 ORDER BY 子句的基础上,加上,另一个要求排序,中间以逗号隔开。
案例一:
要求:查询employees,列表中的employee_id,last_name ,salary,字段,并且要以salary ,进行降序排序,如果得到的查询结果,salary出现相同,我们再以员工ID employee_id 进行升序排序。
SELECT employee_id,last_name ,salary
FROM employees
ORDER BY salary DESC,employee_id ASC

案例二: 查询员工工资大于6000人员姓名和 员工id
SELECT employee_id,last_name,salary
FROM employees
WHERE salary > 6000;
1. ORDER BY 子句可以使用列的别名,却不能在WHERE 子句内声明
WHERE 使用别名查询
SELECT employee_id,last_name ,salary,salary * 12 AS annual_sal #(别名年终工资)
FROM employees
WHERE annual_sal > 10000;
如果执行上述语句,它会有报错提示,未知列 annual_sal 这个列我找不到,没有这个字段
ORDER BY 子句使用列的别名查询:
SELECT employee_id,last_name ,salary,salary * 12 AS annual_sal #(年终工资)
FROM employees
ORDER BY annual_sal ASC
显然可以执行成功,这是为什么呢,因为,SQL语言的执行顺序和其他语言是不一样的
你从原表中没有找到别名这个列,WHERE子句,怎么能用别名列来作为查询条件。
分页:
mysql 使用limit 实现数据分页显示
背景:查询返回的记录太多了,查看起来很不方便,怎么样能够实现分页查询呢?
实现规则:
分页原理 所谓分页显示,就是将数据库中的结果集,一段一段显示出来需要的条件。
优势:减少磁盘IO 消耗,提高系统反应速度,降低网络带宽消耗。
格式:
LIMIT [位置偏移量,] 行数

切记不要受数据编号影响,33,就以为是从编号为33开始。
案例一:
每页返回显示20条记录,此时显示第1页
SELECT employee_id,last_name
FROM employees
LIMIT 0,10; #第一个数是偏移量,第二个数字表示每一页中显示的记录数量

偏移量:从哪里开始起;LIMIT 0 ,20 从头开始,LIMIT 20 ,20,从第二十条数据开始,每页显示 20条件记录
行数:表示在每一页中显示多少条记录
每页显示20条记录,此时显示第2页
SELECT last_name,employee_id
FROM employees
LIMIT 20,20; #第二页是不是要从20开始 。
每页显示20条记录,此时显示第3页
SELECT last_name,employee_id
FROM employees
LIMIT 40,20;
为什么第二个数字没有发生改变,因为第二个数字表示显示记录的数量
LIMIT [位置偏移量,] 行数 生活中的应用场景:

往往每一页显示的数据信息都是相同,作为消费者,通过点击查看的页数,它就会给数据库反馈给后台程序,程序通过运算会给数据库一个值,应该把第几页调出来。
关于LIMIT 分页方法,在MYSQL 8.0 版本后出现了新特性,LIMIT... OFFSET..
SELECT employee_id,last_name,salary
FROM employees
LIMIT .... OFFSET ....#....OFFSET.... ,OFFSET前面成了显示多少条数据,后面表示从偏移量是多少
案例一: 表中有107条数据,我们只想显示第 32,33 条记录
limit 方法
SELECT employee_id,last_name,salary
FROM employees
LIMIT 31,2

MySQL新版本 分页方法:(LIMIT ....OFFSET ....)
SELECT employee_id,last_name,salary
FROM employees
LIMIT 2 OFFSET 131

总结:
1.如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的先后顺序进行。
2..order by 只能用于对列表的某一个值进行排序排序,它目前只能实现升序(asc),或者降序(desc)而where子句 ,却能有着更加精细的要求, 或者 = , => ,< = 可以结合运算符进行使用,达到更加精细的目的,但是ORDER BY 对列表中的某一字段进行升降序排列的作用更加高效和明显,相反使用where子句就很麻烦,甚至可能实现不了。
3. 列的别名只能在 ORDER BY 中使用,不能在WHERE 子句中声明
4. LIMIT ....OFFSET ...... OFFSET 后面的从哪里开始,它会对表进行扫描。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。