今天是SQL教程的第六课,来看看ORDER BY 排序子句。
ORDER BY语句是用来排序的,后面跟的是字段名。
基本语法:
SELECT <字段名> FROM <表名> ORDER BY <字段名>;、
1、ORDER BY 后面可以:
- 是表中现有的列名;
- 给数字排序,也可以给字符、文字排序;
- ASC是升序排序(默认),DESC是倒序排序。
实例: 将Students学生表根据性别排序。
SELECT * FROM Students ORDER BY Ssex;
2、ORDER BY 后面还可以:
跟多个字段名,字段名之间用英文逗号隔开;
任何一个字段名后面都可以加降序排序(DESC);
字段的顺序很重要,会先根据第一个字段排序,第一个字段相同的,再根据第二个字段排序。
实例: 将Students学生表根据性别Ssex倒序排序,再根据Sage升序排序。
SELECT * FROM Students ORDER BY Ssex DESC,Sage;
3、MySQL特性
在MySQL中,ORDER BY 后面可以
- 用任何列排序,不管那列是不是在SELECT子句中。
- 用列别名排序;
实例:
SELECT Sname,Sid+100 AS "新编号" FROM Students ORDER BY Ssex,"新编号";
这两个分别是未在SELECT子句中的列 和 别名列,都用到了 MySQL 特性,要是在其他数据库管理系统中写这样的查询可能就会报错。
作业: 在Scores成绩表中,将课程编号(Cid)为1的记录,根据分数(score)倒序排序。
答案解析: 需要用WHERE来判断课程编号(Cid)为1,ORDER BY子句放在WHERE子句的后面。
SELECT * FROM Scores WHERE Cid = 1 ORDER BY score DESC;
下节课开始我们第七课的学习,来看看LIMIT子句的用法。