【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

posted @ 2023-04-04 23:23  陈景中  阅读(29)  评论(0编辑  收藏  举报