【MySQL】MySQL基础04 — SQL学习 — DQL — 排序查询(转载请注明出处)
SQL学习 — DQL — 排序查询
3. 排序查询
/*
语法:
select 查询字段
from 表名
【where 筛选条件】
order by 排序字段 【asc | desc】
特点:
1. asc代表升序,desc代表降序
如果不写,默认升序
2. 排序字段除了可以是表达式外,还可以是别名
但WHERE后面只能是表达式!!
3. 排序字段中支持单个字段,多个字段,函数
4.order by字句一般放在查询语句的最后面,但limit子句除外
*/
# 案例1:查询员工信息,要求工资从高到低排序
SELECT *
FROM employees
ORDER BY salary DESC;
# 案例2:查询员工信息,要求工资从低到高排序
SELECT *
FROM employees
ORDER BY salary ASC;
# 案例3:查询部门编号>=90的员工信息,按入职时间的先后进行排序【添加筛选条件】
SELECT *
FROM employees
WHERE department_id >= 90
ORDER BY hiredate ASC;
# 案例4:按年薪的高低显示员工的信息和年薪【按表达式排序】
SELECT *, salary * 12 * (1+IFNULL(commission_pct,0)) AS "年薪"
FROM employees
ORDER BY salary * 12 * (1+IFNULL(commission_pct,0)) DESC;
# 案例5:按年薪的高低显示员工的信息和年薪【按别名排序】
SELECT *, salary * 12 * (1+IFNULL(commission_pct,0)) AS "年薪"
FROM employees
ORDER BY 年薪 DESC;
/* WHERE 后面只能加表达式
ORDER BY 后面除了加表达式外,还可以是别名
*/
# 案例6:按姓名的长度显示员工的姓名和工资【按函数排序】
SELECT LENGTH(last_name) AS "姓名长度", last_name, salary
FROM employees
ORDER BY 姓名长度 DESC;
# 案例7:查询员工信息,要求先按工资升序,再按员工编号降序【按多个字段排序】
SELECT *
FROM employees
ORDER BY salary ASC, employee_id DESC;
/*
先排序的内容如果相同,那么在相同的内容里面进行后排序
案例中,如果工资相同,那么在这些相同的工资的员工从按编号降序
*/
3.1 排序查询练习
# 将以下内容复制到sql图像化客户端界面进行思考
1. 查询员工的姓名和部门号和年薪,按年薪降序 按姓名长度升序
2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序
3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序
3.2 排序查询练习答案
文件名:03SQL_sortquery.sql
链接:https://pan.baidu.com/s/11Xqwc9F7W3SZwaRH_8sFhA?pwd=ccjz
提取码:ccjz