当前位置: 首页 > news >正文

【MySQL】(基础篇五) —— 排序检索数据

排序检索数据

本章将讲授如何使用SELECT语句的ORDER BY子句,根据需要排序检索出的数据。

排序数据

还是使用上一节中的例子,查询employees表中的last_name字段

SELECT last_name
FROM `employees`;

输出结果:

在这里插入图片描述

发现其输出并没有特定的顺序。其实,检索出的数据并不是以纯粹的随机顺序显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺序将会受到MySQL重用回收存储空间的影响。因此,如果不明确控制的话,不能(也不应该)依赖该排序顺序。关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有
意义。

子句(clause): SQL语句由子句构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。我们使用过的SELECT语句的FROM语句都是子句。本次介绍的ORDER BY子句是一个可选子句。
为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对输出进行排序。请看下面的例子:

【示例】对employees表中的last_name字段查询结果进行排序

SELECT last_name
FROM `employees`
ORDER BY last_name;

运行结果按照字典顺序排序:

在这里插入图片描述

按多个列排序

经常会有这样的需求,按照姓先排序,如果姓重复了,再按照名排序。ORDER BY子句后面可以接多个字段,其顺序就是排序的先后顺序

【示例】查询employees表中所有信息,先按照last_name排序,再对first_name排序

SELECT *
FROM `employees`
ORDER BY last_name, first_name;

运行结果:

在这里插入图片描述

排序方向

数据排序不限于升序排序(从A到Z)。这只是默认的排序顺序,还可以使用ORDER BY子句以降序(从Z到A)顺序排序。为了进行降序排序,必须指定DESC关键字。

【示例】查询employees表中的last_name字段,使用降序排序

SELECT last_name
FROM `employees`
ORDER BY last_name DESC;

运行结果:

在这里插入图片描述

如果对多个字段进行排序,每个字段后面都可以加上限制排序方向的关键字,如

SELECT *
FROM `employees`
ORDER BY last_name DESC, first_name;

上述表示先对last_name字段进行降序, 然后再对firtst_name进行升序。

与DESC相反的关键字是ASC(ASCENDING),在升序排序时可以指定它。但实际上,ASC没有多大用处,因为升序是默认的(上面例子中,既不指定ASC也不指定DESC,则假定为ASC)。

在字典(dictionary)排序顺序中,A被视为与a相同,这是MySQL(和大多数数据库管理系统)的默认行为。但是,许多数据库管理员能够在需要时改变这种行为(如果你的数据库包含大量外语字符,可能必须这样做)。

http://www.lryc.cn/news/368609.html

相关文章:

  • C++ C_style string overview and basic Input funcitons
  • VS2022+Qt雕刻机单片机马达串口上位机控制系统
  • Android Ble低功耗蓝牙开发
  • Visual Studio的快捷按键
  • 【WEB系列】过滤器Filter
  • [书生·浦语大模型实战营]——LMDeploy 量化部署 LLM 实践
  • TiDB-从0到1-配置篇
  • 微信小程序按钮设计与交互:打造极致用户体验
  • ES6中如何使用class和extends关键字实现继承?
  • Linux:基本指令
  • 商业C++静态代码检测工具PC-lint Plus 、 polysace和sonarqube对比
  • 邬家桥公园
  • Flutter 中的 RenderObjectToWidgetAdapter 小部件:全面指南
  • SNAT与DNAT
  • MySql八股文知识点总结,一篇文章让mysql成为面试加分项
  • Python 很好用的爬虫框架:Scrapy:
  • C/C++|关于 namespace 在C++中的代码组织
  • selenium自动化测试入门 —— 上传文件
  • C# Math.Round() 四舍六入五取偶
  • springboot手动触发参数校验,service层调用参数校验
  • 动手学深度学习4.10 实战Kaggle比赛:预测房价-笔记练习(PyTorch)
  • 1035 插入与归并(测试点6)
  • 什么情况下需要使用分布式事务,有哪些方案?
  • Java加密体系结构参考指南-Java Cryptography Architecture
  • C++中避免内存泄漏的方法
  • 5.1 实体完整性
  • (学习笔记)数据基建-数据质量
  • WINUI——Behavior(行为)小结
  • Ruoyi5.x RuoYi-Vue-Plus新建Translation翻译类
  • 类加载的奥秘