前面小節(jié)介紹了如何查詢數(shù)據(jù),并且介紹了如何使用 WHERE 條件對(duì)查詢的數(shù)據(jù)結(jié)果集進(jìn)行篩選轮蜕,本小節(jié)介紹如何使用 ORDER BY 對(duì)查詢結(jié)果集進(jìn)行排序举瑰,排序在實(shí)際業(yè)務(wù)中非常有必要四濒,可以較好地對(duì)結(jié)果集數(shù)據(jù)分析和處理船侧。
1.ASC 從小到大排序
ASC 是對(duì)結(jié)果集按照字段從小到大排序(升序)欠气,以 teacher 表為例,將查詢出來(lái)的所有結(jié)果集按照年齡 age 從小到大排序:
SELECT * FROM teacher ORDER BY age ASC;
執(zhí)行結(jié)果如下圖:
2.DESC 從大到小排序
DESC 是對(duì)結(jié)果集按照字段從大到小排序(降序)镜撩,以 teacher 表為例预柒,將查詢出來(lái)的所有結(jié)果集按照年齡 id 從大到小排序:
SELECT * FROM teacher ORDER BY id DESC;
執(zhí)行結(jié)果如下圖:
3.使用多字段混合排序
以 teacher 表為例,將查詢出來(lái)的結(jié)果集按照 age 從大到小排序之后袁梗,再按照 id 字段從小到大排序:
SELECT * FROM teacher ORDER BY age DESC,id ASC;
執(zhí)行結(jié)果如下圖:
4.對(duì)字符串類型字段排序
前面排序的 age 和 id 字段是 int 類型宜鸯,為了演示方便這里先插入幾個(gè) name 字段為英文名的教師測(cè)試數(shù)據(jù),并對(duì) name 字段排序遮怜,插入數(shù)據(jù) SQL 語(yǔ)句如下:
INSERT INTO teacher
(name,age,id_number,email)
VALUES
('Tom'淋袖,22,'42011720200604077X','tom@qq.com')锯梁,
('Jack'即碗,23,'42011720200604099X','jack@qq.com')涝桅,
('Mary'拜姿,24,'42011720200604020X','mary@qq.com')冯遂,
('Timo',25,'42011720200604022X'谒获,'timo@qq.com')蛤肌,
('Faker'壁却,21,'42011720200604033X','faker@qq.com');
對(duì)查詢結(jié)果集按照 name
字段 ASC
升序排序:
SELECT * FROM teacher ORDER BY name ASC;
執(zhí)行結(jié)果如下圖:
Tips:如上圖所示裸准,使用 ASC 對(duì)結(jié)果集按照 name 字段升序展东,其實(shí)是對(duì) name 字段字符串編碼的排序,英文字符排序在前炒俱,中文在后盐肃,其中排序規(guī)則是按照字符 ASCII碼 對(duì)應(yīng)值的大小排序的。
5.小結(jié)
本小節(jié)介紹了如何使用 ORDER BY 對(duì)查詢結(jié)果集按照值字段排序权悟,其中包括 ASC 升序和 DESC 降序砸王,需要注意的是各種數(shù)據(jù)的字符集可能不同,如中文字符編碼 GBK編碼峦阁、utf-8編碼谦铃, 若需要經(jīng)常對(duì)字符串類型字段進(jìn)行排序,可以給該字符串字段加上普通 Bree索引榔昔,二級(jí)索引樹(shù)字符串默認(rèn)存儲(chǔ)方式是按照字符集升序存儲(chǔ)的(MySQL8.0 可自定義排序存儲(chǔ)方式)驹闰,所以有索引的字段排序性能比沒(méi)有索引的字段排序性能好。