1.排序数据
其实,检索出的数据并不是随机显示的。
如果不排序,数据一般将以它在表中出现的顺序显示,这有可能是数据最初添加到表中的顺序。
但是,如果数据随后进行过更新或删除,那么这个顺序将会受到DBMS重用回收存储空间的方式的影响。
因此,如果不明确控制的话,则最终的结果不能依赖该排序顺序。
关系数据库设计理论认为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有任何意义。
为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY 子句。
ORDER BY 子句取一个或多个列的名字,据此对输出进行排序。
SQL
SELECT prod_name
FROM Products
ORDER BY prod_name
"SELECT * FROM blockbusters
ORDER BY `票房`"
2.按多个列排序
经常需要按不止一个列进行数据排序。
例如,如果要显示雇员名单,可能希望按姓和名排序(首先按姓排序,然后在每个姓中再按名排序)。如果多个雇员有相同的姓,这样做很有用。
要按多个列排序,只需指定这些列名,列名之间用逗号分开即可
SQL
SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY prod_price,prod_name;
"SELECT `主流派`,`次流派`,`其他流派`FROM blockbusters
ORDER BY `票房`"
3.按列位置排序
除了能用列名指出排序顺序外,ORDER BY 还支持按相对列位置进行排序。
SQL
SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY 2,3;
"SELECT ID ,`票房`,`电影级别`
FROM blockbusters
ORDER BY 2,3"
这里的2,3 指定的是选择列的相对位置而不是列名,2指定的是相对位置第二个列,3指定的是相对位置的第三个列。
4.指定排序方向
数据排序不限于升序排序(从A到Z),这只是默认的排序顺序。
还可以使用ORDER BY 子句 进行降序(从Z到A)排序。
为了降序排序,必须指定DESC
SQL
SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY prod_price DESC;
"SELECT ID ,`票房`,`电影级别`
FROM blockbusters
ORDER BY `票房` DESC"
如果用多个列排序可以这样实现
SQL
SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY prod_price DESC,prod_name
"SELECT ID ,`票房`,`电影级别`
FROM blockbusters
ORDER BY `电影级别` DESC,`票房`"