【MySQL】排序检索数据

16 篇文章 1 订阅

每日鸡汤 ——
这短短的一生我们最终都会逝去,你不妨大胆一些,爱一个人,攀一座山,追一个梦。

前言:

  1. 本实验中所用数据库创建SQL语句以及插入数据到数据库中的SQL语句链接:https://pan.baidu.com/s/1hvcR13JJqx_0VXA3bz3rgQ
    提取码:2333
  2. 书接上回说到,MySQL检索数据 ~~~~~~

本篇文章主要介绍如何使用 select 的 MySQL 语言,根据我们的想要排序检索出的数据。

1. 排序数据

检索出的数据不是随机显示的,若不排序,数据以其在表中出现的顺序显示。关系数据库设计理论认为,如果不规定排序顺序,则不能假定检索出的数据的顺序有任何意义。
为了明确地排序用 select 语句检索出的数据,可以使用 order by 字句 取一个或多个列的名字,以此对输出进行排序

如下:

select prod_name
from Products
order by prod_name;

注意: order by 字句的位置一定是 select 语句的最后一条字句,如果不是最后一条字句,将会出错

2. 按多个列排序

通常我们不只需要按单个列排序,而是需要按多个列排序,当第一个列相等时,按第二个列排序…以此类推。这是,我们只需要将需要排序的多个列间用逗号隔开即可。

如下: 先按 prod_price 排序,prod_price 相同时,按照 prod_name 排序

select prod_id, prod_price, prod_name
from Products
order by prod_price, prod_name;

3. 按列位置排序

order by 字句还支持按照列位置进行排序,这种方法的好处是不需要重新输入列名。但是它也有缺点,比如进行排序的列必须在 select 清单中,并且这种方式当 select 清单变化时容易造成错误。

如下:2, 3 分别表示 select 清单中的第二(prod_price),第三列(prod_name)

select prod_id, prod_price, prod_name
from Products
order by 2, 3;

4. 指定排序方式(升序或者降序)

order by 默认为升序排序 (asc),可以通过指定 desc 关键字来实现降序排序

如下: 通过在 order by 字句的最后加上 desc,实现降序排序

select prod_id, prod_price, prod_name
from Products
order by prod_price desc;

思考:当我们需要对多个列降序排序时,应该怎么写呢?

desc 作用域问题: desc 关键字只作用于直接位于其前面的列名,因此若是想要对多个列降序排序,需要在需要降序排序的每个列的最后都加上 desc 关键字

如下: 按照 prod_price 降序排序,当 prod_price 相同时,按照 prod_id 降序排序;同理,当 prod_id 相同时,按照 prod_name 降序排序。

select prod_id, prod_price, prod_name
from Products
order by prod_price desc, prod_id desc, prod_name desc;

注: desc 只作用于直接位于其前面的列名的特点,使得我们可以很好的定制化排序,在需要降序排序的列后加 desc,而其他列仍然可以按照升序排序,这种机制非常灵活。

5. 扩展 —— 文本性数据如何排序

在对文本性数据进行排序时,A与a是否相同;a位于B之前,还是Z之后,取决于数据库的设计方式。

实际上,在字典排序顺序中,A被视为与a相同,大部分数据库也采取这种默认做法。要想改变这种行为,可以求助数据库管理员的帮助,许多DBMS容许数据库管理员改变这种行为。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值