个人主页 :阿然成长日记 点击可跳转
个人专栏: 数据结构与算法C语言进阶
不能则学,不知则问,耻于问人,决无长进
SELECT
[DISTINCT ] 【*
或 字段名1,字段名2……】
FROM
【表名字 】
WHERE
【查询条件】
ORDER BY 【字段名】ASC/DESC;
ORDER BY
关键字可以深紫色文字使查询返回的结果集按照指定的列进行排序,可以按照某一列排序或者同时按照多列进行排序,排序的顺序可以升序或者降序。
ORDER BY 关键字可以按照某「列名」进行排序,列名就是字段名
例如:
根据id对学生进行排序
格式:ORDER BY
n 表示,以“第n个字段”排序。
例如:根据第三个进行排序
在ORDER BY语句中,如果没有写排序规则,默认是ASC升序。如果想要降序,则必须加DESC后缀
例如:根据id降序排列
例如:
根据数学成绩和id进行排序。
首先会进行数学成绩排队,如果相同,则只根据数学成绩排序。如果有相同的,则会再根据id序号进行排序。
当我们使用order by对某一字段进行排序时,该字段中包含null值,这种情况下,排序就会出现问题,我们可以根据实际情况,指定为空的排在前面或者排在后面。
可以发现NULL值被默认放到了最后。
可以这样想,便于记忆:
(1)默认排序规则【升序,NULL在最下main】
(2)标明排序规则:NULL最小升序ASC肯定是排最上面,降序时DESC最小的NULL值放在最下面。
(3)如果需要变化,那么就使用特定格式。
注意: ORDER BY的使用位置非常关键,甚至会影响查询性能。
通过验证得知:order by 中的字段出现在where条件中时,才会利用索引而不排序,更准确的说,order by 中的字段在执行计划中利用了索引时,不用排序操作
还应注意,在这里我使用的INNODB引擎,不同的引擎在排序方法上有所不同,不同的引擎,会有不同的查询速率。
后续会对索引进行单独讲解,在这仅仅一提
。