【MySQL】第四章 排序和分页

一,排序

(1) 排序的规则

ASC 为升序排序 (ascend)
DESC 为降序排序 (descend)
ORDER BY 子句在SELECT末尾写上

基于排序语法的练习

sql 复制代码
SELECT * 
FROM employees;

# 如果在ORDER BY 后没有显式指名排序的方式的话,则默认按照升序排列。
# 练习:按照salary从高到低的顺序显示员工信息
SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary ASC;

# 练习:按照salary从低到高的顺序显示员工信息
SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC;

执行升序排序后的窗口显示

执行降序排序后的窗口显示

(2) 排序的别名使用

在前面的章节讲到,可以使用空格,双引号和AS关键字给一个表里面的列名起别名

示例代码

sql 复制代码
#2. 使用列的别名,进行排序
SELECT employee_id emp_id, last_name, salary AS sala
FROM employees
ORDER BY sala ASC;

#列的别名只能在 ORDER BY 中使用,不能在WHERE中使用。
#如下操作报错!
SELECT employee_id emp_id, last_name, salary AS sala
FROM employees
WHERE emp_id IN(100, 120, 140)
ORDER BY sala ASC;

在使用别名的时候,ORDER BY是可以利用别名的,但是WHERE不可以,这个后面会讲解

报错信息

sql 复制代码
1 queries executed, 0 success, 1 errors, 0 warnings

查询:SELECT employee_id emp_id, last_name, salary AS sala FROM employees where emp_id in(100, 120, 140) ORDER BY sala ASC LIMIT 0, 10...

错误代码: 1054
Unknown column 'emp_id' in 'where clause'

执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0 sec

(3) 二级排序

二级排序就是为了处理当一级排序中两个结果相等的时候,为了不乱序所引出来的方法

示例代码

sql 复制代码
#4. 二级排序
#练习:显示员工信息,按照department_id的降序排列,salary的升序排列
SELECT employee_id,salary,department_id
FROM employees
ORDER BY department_id DESC,salary ASC;

(4) MySQL内部执行语句的顺序

sql 复制代码
#3. 强调格式:WHERE 需要声明在FROM后,ORDER BY之前。
SELECT employee_id,salary
FROM employees
WHERE department_id IN (50,60,70)
ORDER BY department_id DESC;

二,分页

分页的意思就是将大量的数据进行分开,以一页一页的形式来进行展示对应的数据

LIMIT的语法

sql 复制代码
LIMIT 偏移量, 显示的数据个数

(1) LIMIT的基本使用

sql 复制代码
# 需求1:每页显示20条记录,此时显示第1页
SELECT employee_id,salary,department_id
FROM employees
LIMIT 0, 20

可以看到下面的数据通过该指令变成了20行的数据

当想显示下一页的时候

sql 复制代码
# 需求2:每页显示20条记录,此时显示第2页
SELECT employee_id, salary, department_id
FROM employees
LIMIT 20, 20
sql 复制代码
#需求:每页显示pageSize条记录,此时显示第pageNo页:
#公式:LIMIT (pageNo-1) * pageSize,pageSize;

(2) WHERE ... ORDER BY ...LIMIT 声明顺序

sql 复制代码
# LIMIT的格式: 严格来说:LIMIT 位置偏移量,条目数
# 结构"LIMIT 0,条目数" 等价于 "LIMIT 条目数"

SELECT employee_id,last_name,salary
FROM employees
WHERE salary > 6000
ORDER BY salary DESC
#limit 0,10;
LIMIT 10;

LIMIT的声明顺序是放到最下面的,至于为什么这么放,后面也会与系统的讲述

练习

(3) MySQL8.0的新特性

sql 复制代码
#2.3 MySQL8.0新特性:LIMIT ... OFFSET ...

#练习:表里有107条数据,我们只想要显示第 32、33 条数据怎么办呢?

SELECT employee_id,last_name
FROM employees
LIMIT 2 OFFSET 31;

LIMIT 显示的数据量 OFFSET 偏移量

相关推荐
曹牧10 分钟前
C#:主线程能够捕获到子线程中的异常
开发语言·数据库·c#
朝阳58135 分钟前
MongoDB 副本集从零搭建到生产可用
数据库·mongodb
雨辰AI1 小时前
SpringBoot3 整合达梦 DM9 超详细入门实战|从零搭建可直接上线
数据库·微服务·架构·政务
我是一颗柠檬1 小时前
【MySQL全面教学】MySQL性能优化实战Day13(2026年)
数据库·后端·sql·mysql·性能优化·database
AI人工智能+电脑小能手2 小时前
【大白话说Java面试题 第84题】【Mysql篇】第14题:为什么用 InnoDB 存储引擎的表建议用整型的自增主键?
java·开发语言·数据库·mysql·面试
张彦峰ZYF2 小时前
检索增强生成(RAG)系统的基础:全面深入矢量数据库
数据库·大模型·rag
牧羊狼的狼3 小时前
MySQL 四大索引失效写法 + 业务替代最优解决方案
mysql·索引失效
Elastic 中国社区官方博客3 小时前
我们如何在 Elasticsearch Serverless 上将向量搜索吞吐量提升一倍
大数据·数据库·人工智能·elasticsearch·搜索引擎·云原生·serverless
一 乐3 小时前
高校实习信息发布网站|基于Spring Boot的高校实习信息发布网站的设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·高校实习信息发布网站
Dxy12393102163 小时前
三种方式避坑:案例 + 解决方法
python·mysql