[MySQL] 排序与分页(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: [MySQL] 排序与分页

91076b85e79240d1affab214cea315a5.jpg

资料

根据【MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!】 整理

资料链接:

百度网盘:

链接:https://pan.baidu.com/s/1KboU_3EZJxrezMWZ2klP6g

提取码:1234

阿里云盘

【MySQL】

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;



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
关系型数据库 MySQL
Mysql语句_查询数据百分比、人员年龄、数据排序、添加查询时的列属性、合并查询结果
Mysql语句_查询数据百分比、人员年龄、数据排序、添加查询时的列属性、合并查询结果
21 0
|
7天前
|
关系型数据库 MySQL 数据库
MySQL的排序、分组、合并
MySQL的排序、分组、合并
|
10天前
|
SQL 关系型数据库 MySQL
MySQL多表联合查询+分组+排序
MySQL多表联合查询+分组+排序
12 0
|
1月前
|
关系型数据库 MySQL 数据库
【MySQL进阶之路 | 基础篇】排序(ORDER BY)与分页(LIMIT)
【MySQL进阶之路 | 基础篇】排序(ORDER BY)与分页(LIMIT)
|
1月前
|
存储 SQL 关系型数据库
你有这么高效的MySQL版本号排序,记住我给出的原理
在MySQL中,对版本号进行正确排序遇到了问题,表现为不符合常规的版本比较逻辑,如“1.0.12”被错误地排在“1.0.2”之后。这可能是由于接口在处理版本号比较时的算法或逻辑错误。为解决这个问题,提出了四个优化方案。
|
1月前
|
存储 关系型数据库 MySQL
MySQL各字符集、排序规则的由来、用法,区别和联系
MySQL支持多种字符集和排序规则,这些在数据库设计和数据处理中起着重要作用。下面是它们的由来、用法、区别和联系: 1. **字符集(Character Set)**: - **由来**:字符集定义了数据库中可以存储的字符集合,以及这些字符在数据库中的存储方式。 - **用法**:在创建数据库或表时,可以指定所需的字符集。常见的字符集包括UTF-8、UTF-16、Latin1等。 - **区别和联系**:不同的字符集支持不同的字符范围和存储方式,选择合适的字符集可以确保数据的正确存储和处理。例如,UTF-8支持全球范围内的大多数字符,而Latin1只支持西欧语言字符集。
|
18天前
|
SQL 关系型数据库 MySQL
MySQL数据库——SQL(3)-DQL(基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询、案例练习)
MySQL数据库——SQL(3)-DQL(基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询、案例练习)
20 0
|
1月前
|
存储 算法 关系型数据库
MySQL怎样处理排序⭐️如何优化需要排序的查询?
MySQL怎样处理排序⭐️如何优化需要排序的查询?
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】DQL-排序查询-语法&注意事项&可cv例题语句
【MySQL】DQL-排序查询-语法&注意事项&可cv例题语句
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】DQL-排序查询-语法&排序方式&注意事项&可cv例题语句
【MySQL】DQL-排序查询-语法&排序方式&注意事项&可cv例题语句