MySQL学习笔记 ------ 排序查询

一、语法

SELECT 查询列表

FROM 表名

【WHERE 筛选条件】

ORDER BY 排序列表 【ASC}DESC】;#支持多个排序条件,以逗号分隔

二、特点

1、ASC :升序,如果不写默认升序

DESC:降序

2、排序列表 支持 单个字段、多个字段、函数、表达式、别名;

3、ORDER BY 的位置一般放在查询语句的最后(除LIMIT语句之外);

三、案例分析

1、显示原表

cpp 复制代码
SELECT * FROM employees;

2、按单个字段排序

cpp 复制代码
SELECT * FROM employees ORDER BY salary DESC;

3、添加筛选条件再排序

案例:查询部门编号>=90的员工信息,并按员工编号降序

cpp 复制代码
SELECT *

FROM employees

WHERE department_id>=90

ORDER BY employee_id DESC;

4、按表达式排序

案例:查询员工信息 按年薪降序

cpp 复制代码
SELECT *,salary*12*(1+IFNULL(commission_pct,0))

FROM employees

ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

5、按别名排序

案例:查询员工信息 按年薪升序

cpp 复制代码
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪

FROM employees

ORDER BY 年薪 ASC;

6、按函数排序

案例:查询员工名,并且按名字的长度降序

cpp 复制代码
SELECT LENGTH(last_name),last_name

FROM employees

ORDER BY LENGTH(last_name) DESC;

7、按多个字段排序

案例:查询员工信息,要求先按工资降序,再按employee_id升序

cpp 复制代码
SELECT *

FROM employees

ORDER BY salary DESC,employee_id ASC;

四、案例练习

1、查询员工的姓名和部门号和年薪,按年薪升序、按姓名升序

cpp 复制代码
SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪

FROM employees

ORDER BY 年薪 ASC,last_name ASC;

2.选择工资不在8000到17000的员工的姓名和工资,按工资降序

cpp 复制代码
SELECT last_name,salary,salary*12*(1+IFNULL(commission_pct,0)) 年薪

FROM employees

WHERE salary NOT BETWEEN 8000 AND 17000

ORDER BY 年薪 ASC,salary DESC;

3.查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序

cpp 复制代码
SELECT *

FROM employees

WHERE email LIKE '%e%'

ORDER BY LENGTH(email) DESC,department_id;
相关推荐
leoufung1 小时前
vim 多个关键字高亮插件介绍
linux·编辑器·vim
夜泉_ly2 小时前
MySQL -安装与初识
数据库·mysql
qq_529835353 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
Nerd Nirvana4 小时前
软考—系统架构设计(案例 | 论文)
linux·系统架构·软件工程·软考·计算机基础
StickToForever4 小时前
第4章 信息系统架构(五)
经验分享·笔记·学习·职场和发展
勤奋的凯尔森同学5 小时前
webmin配置终端显示样式,模仿UbuntuDesktop终端
linux·运维·服务器·ubuntu·webmin
月光水岸New5 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6755 小时前
数据库基础1
数据库
我爱松子鱼5 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo6 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库