MySQL数据库中的排序与分页的操作详解

简介: MySQL数据库中的排序与分页的操作详解

一、排序

如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序显示的。

使用关键字ORDER BY进行排序操作

#练习:按照salary从高到低的顺序显示员工信息
#使用ORDER BY 对查询到的数据进行排序操作
#升序:ASC(ascend)
#降序:DESC(descend)
SELECT employee_id,last_name,salary 
FROM employees ORDER BY salary; #如果ORDER BY 后没有显式指名排序的方式的话,则默认按照升序排列。
#2.我们可以使用列的别名,进行排序
SELECT employee_id,salary,salary * 12 AS annual_sal
FROM employees
ORDER BY annual_sal;
#列的别名只能在ORDER BY 中使用,不能在WHERE中使用
#如下操作报错
#报错 在where过滤条件中不认识annual_sal字段 Unknown column 'annual_sal' in 'where clause'
SELECT employee_id,salary,salary * 12 annual_sal
FROM employees
WHERE annual_sal > 81600; 
#3.强调格式:WHERE 需要声明在FROM后,ORDER BY之前。
SELECT employee_id,salary
FROM employees 
WHERE department_id IN (50,60,70)
ORDER BY department_id DESC;
#二级排序
#练习:显示员工信息,按照department_id的降序排列,salary的升序排列
SELECT employee_id,salary,department_id
FROM employees 
ORDER BY department_id DESC,salary ASC;

二、分页

使用关键字LIMIT进行排序操作

#2.分页
#需求1:每页显示20条记录,此时显示第一页
SELECT employee_id,last_name 
FROM employees
LIMIT 0,20;
#需求2:每页显示20条记录,此时显示第二页
SELECT employee_id,last_name 
FROM employees
LIMIT 20,40;
#需求2:每页显示20条记录,此时显示第二页
SELECT employee_id,last_name 
FROM employees
LIMIT 20,20;
#需求3:每页显示20条记录,此时显示第三页
SELECT employee_id,last_name 
FROM employees
LIMIT 40,20;
#需求:每页显示pageSize条记录,此时显示第pageNo页
#公式:LIMIT (pageNo - 1) * pageSize,pageSize;
#2.2 WHERE ... ORDER BY ... LIMIT 声明顺序如下:
#结构"LIMIT 0,条目数" 等价于 "LIMIT 条目数" 
SELECT employee_id,last_name,salary
FROM employees
WHERE salary>6000
ORDER BY salary DESC
LIMIT 0,10;
#练习:表里有107条数据,我们只想要显示第32,33条数据怎么办?
SELECT employee_id,last_name
FROM employees
LIMIT 31,2;
#2.3 MySQL8.0新特性:LIMIT ... OFFSET ...
#练习:表里有107条数据,我们只想要显示第32,33条数据怎么办?
SELECT employee_id,last_name
FROM employees
LIMIT 2 OFFSET 31;
#练习:查询员工表中工资最高的员工信息
SELECT employee_id,last_name,salary
FROM employees
ORDER BY salary DESC
LIMIT 0,1;


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
11月前
|
SQL 缓存 关系型数据库
如何解决MySQL 的深度分页问题?
在构建高性能Web应用程序时,数据库查询性能至关重要。本文深入探讨了MySQL中`LIMIT ... OFFSET ...`语法的性能瓶颈,并介绍了一种更高效的分页方法——游标分页(Cursor Pagination)。通过记录每页最后一个记录的唯一标识,游标分页能显著提升查询效率,将时间复杂度从O(n + m)降低到O(log n + m),特别适用于大规模数据的分页查询场景。此外,文章还介绍了其他优化方法,如覆盖索引分页、分区表、缓存和基于时间戳的分页,并提供了实践中的最佳建议,帮助开发者选择最适合的分页策略,提升系统性能和用户体验。
692 9
|
4月前
|
存储 关系型数据库 MySQL
MySQL中实施排序(sorting)及分组(grouping)操作的技巧。
使用这些技巧时,需要根据实际的数据量、表的设计和服务器性能等因素来确定最合适的做法。通过反复测试和优化,可以得到最佳的查询性能。
315 0
|
7月前
|
存储 SQL 关系型数据库
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
京东面试:mysql深度分页 严重影响性能?根本原因是什么?如何优化?
|
10月前
|
监控 关系型数据库 MySQL
MySQL和SQLSugar百万条数据查询分页优化
在面对百万条数据的查询时,优化MySQL和SQLSugar的分页性能是非常重要的。通过合理使用索引、调整查询语句、使用缓存以及采用高效的分页策略,可以显著提高查询效率。本文介绍的技巧和方法,可以为开发人员在数据处理和查询优化中提供有效的指导,提升系统的性能和用户体验。掌握这些技巧后,您可以在处理海量数据时更加游刃有余。
921 9
|
9月前
|
Oracle 关系型数据库 Java
|
关系型数据库 MySQL PHP
php实现一个简单的MySQL分页
通过本文的详细步骤和代码示例,我们实现了一个简单的PHP MySQL分页功能。主要步骤包括计算总记录数、设置分页参数、查询当前页的数据以及生成分页链接。这种分页方式适用于大多数Web应用,能够有效提升用户体验和页面响应速度。
294 4
|
SQL 关系型数据库 MySQL
mysql分页读取数据重复问题
在服务端开发中,与MySQL数据库进行数据交互时,常因数据量大、网络延迟等因素需分页读取数据。文章介绍了使用`limit`和`offset`参数实现分页的方法,并针对分页过程中可能出现的数据重复问题进行了详细分析,提出了利用时间戳或确保排序规则绝对性等解决方案。
503 1
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
缓存 关系型数据库 MySQL
一文彻底弄懂MySQL优化之深度分页
【10月更文挑战第24天】本文深入探讨了 MySQL 深度分页的原理、常见问题及优化策略。首先解释了深度分页的概念及其带来的性能和资源问题。接着介绍了基于偏移量(OFFSET)和限制(LIMIT)以及基于游标的分页方法,并分析了它们的优缺点。最后,提出了多种优化策略,包括合理创建索引、优化查询语句和使用数据缓存,帮助提升分页查询的性能和系统稳定性。
1572 1
|
SQL 搜索推荐 关系型数据库
MySQL 如何实现 ORDER BY 排序?
本文详细解析了MySQL中`ORDER BY`的实现原理及优化方法。通过解析与优化、执行及多种优化技术,如索引利用、内存排序、外部排序等,帮助你提升排序性能。了解其背后的机制,可显著优化查询效率。
750 4

推荐镜像

更多