当前位置: 首页 > 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(和大多数数据库管理系统)的默认行为。但是,许多数据库管理员能够在需要时改变这种行为(如果你的数据库包含大量外语字符,可能必须这样做)。

相关文章:

  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • 地推数据不再迷茫,Xinstall助你一臂之力!
  • Docker与低代码跨平台开发:实现高效跨平台开发的新范式
  • Linux基础(2)基础命令与vim
  • C# WPF入门学习主线篇(十一)—— 布局管理
  • C++和C语言到底有什么区别?
  • Vue2后台管理:项目开发全流程(一)
  • 37、matlab矩阵运算
  • 【Unity】RPG2D龙城纷争(二)关卡、地块
  • 一个简单的R语言数据分析案例
  • centos7.6使用飞鱼FlyFish的docker镜像
  • 【GeoTransformer系列】——数据部分梳理(1)
  • 【源码】Spring Data JPA原理解析之事务注册原理
  • SHELL脚本学习(六) 呈现数据
  • 联想测开一面(电话面试)笔试60%
  • 【面试系列】之二:关于js原型
  • 0x05 Python数据分析,Anaconda八斩刀
  • canvas绘制圆角头像
  • CSS3 变换
  • ES6系统学习----从Apollo Client看解构赋值
  • js如何打印object对象
  • k个最大的数及变种小结
  • Linux各目录及每个目录的详细介绍
  • Next.js之基础概念(二)
  • windows-nginx-https-本地配置
  • Zepto.js源码学习之二
  • 二维平面内的碰撞检测【一】
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 缓存与缓冲
  • 记一次和乔布斯合作最难忘的经历
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 少走弯路,给Java 1~5 年程序员的建议
  • 手写双向链表LinkedList的几个常用功能
  • 微信公众号开发小记——5.python微信红包
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Linux权限管理(week1_day5)--技术流ken
  • 阿里云ACE认证学习知识点梳理
  • 从如何停掉 Promise 链说起
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • !$boo在php中什么意思,php前戏
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (十五)、把自己的镜像推送到 DockerHub
  • (一)VirtualBox安装增强功能
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET Core 2.1路线图
  • .net core Redis 使用有序集合实现延迟队列
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景