【MySQL系列】Select语句单表查询详解(二)ORDERBY排序

在这里插入图片描述


个人主页 :阿然成长日记 点击可跳转
个人专栏: 数据结构与算法C语言进阶
不能则学,不知则问,耻于问人,决无长进

文章目录

  • 一、排序ORDER BY
    • 1.ORDER BY的格式:
    • 2.ORDER BY的作用:
    • 3.ORDER BY的使用:
      • 1️⃣ 按照字段名排序
      • 2️⃣按字段照序号进行排序
      • 3️⃣降序DESC
      • 4️⃣根据多列排序
      • 5️⃣还可以结合搭配函数或者一些查询条件使用。
  • 二、遇到NULL的情况
    • 1.使用场景
    • 2.直接默认排序(不加排序规则)
    • 3.使用ASC升序
    • 4. 使用 IF ( isnull (字段名称),1,0)
    • 总结:
  • ORDER BY排序与索引关系的注意事项

⬇️创建一个学生成绩表,供后续使用
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第1张图片

一、排序ORDER BY

1.ORDER BY的格式:

SELECT [DISTINCT ] 【* 或 字段名1,字段名2……
FROM表名字
WHERE 【查询条件】
ORDER BY 【字段名】ASC/DESC;

2.ORDER BY的作用:

ORDER BY 关键字可以深紫色文字使查询返回的结果集按照指定的列进行排序,可以按照某一列排序或者同时按照多列进行排序,排序的顺序可以升序或者降序。

3.ORDER BY的使用:

1️⃣ 按照字段名排序

ORDER BY 关键字可以按照某「列名」进行排序,列名就是字段名

例如:根据id对学生进行排序

执行语句:
在这里插入图片描述
查询结果:
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第2张图片

2️⃣按字段照序号进行排序

格式:ORDER BY n 表示,以“第n个字段”排序。

【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第3张图片
从左到右(1–n)

例如:根据第三个进行排序

执行语句
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第4张图片
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第5张图片

3️⃣降序DESC

在ORDER BY语句中,如果没有写排序规则,默认是ASC升序。如果想要降序,则必须加DESC后缀

例如:根据id降序排列

执行语句
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第6张图片
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第7张图片

4️⃣根据多列排序

例如:
根据数学成绩和id进行排序。

首先会进行数学成绩排队,如果相同,则只根据数学成绩排序。如果有相同的,则会再根据id序号进行排序。

执行语句
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第8张图片
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第9张图片

5️⃣还可以结合搭配函数或者一些查询条件使用。

执行语句
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第10张图片
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第11张图片

二、遇到NULL的情况

1.使用场景

当我们使用order by对某一字段进行排序时,该字段中包含null值,这种情况下,排序就会出现问题,我们可以根据实际情况,指定为空的排在前面或者排在后面。

2.直接默认排序(不加排序规则)

执行语句
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第12张图片
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第13张图片

可以发现NULL值被默认放到了最后。

3.使用ASC升序

【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第14张图片
可以发现NULL值又被放到了最前面。

4. 使用 IF ( isnull (字段名称),1,0)

执行语句
在这里插入图片描述
【MySQL系列】Select语句单表查询详解(二)ORDERBY排序_第15张图片
可以发现NULL值又跑到了最下面。

总结:

可以这样想,便于记忆:
(1)默认排序规则【升序,NULL在最下main】
(2)标明排序规则:NULL最小升序ASC肯定是排最上面,降序时DESC最小的NULL值放在最下面。
(3)如果需要变化,那么就使用特定格式。

ORDER BY排序与索引关系的注意事项

注意: ORDER BY的使用位置非常关键,甚至会影响查询性能。
通过验证得知:order by 中的字段出现在where条件中时,才会利用索引而不排序,更准确的说,order by 中的字段在执行计划中利用了索引时,不用排序操作
还应注意,在这里我使用的INNODB引擎,不同的引擎在排序方法上有所不同,不同的引擎,会有不同的查询速率。
后续会对索引进行单独讲解,在这仅仅一提

你可能感兴趣的:(数据库,mysql,android,数据库)