第三课 排序检索数据
3.1 排序数据
首先,下列SQL语句返回的数据其输出并没有特定的顺序。
例如:输入
SELECT prod_name FROM Products
输出:
所以,为了明确地排序用SELECT语句检索出的数据,我们可以使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对输出进行排序。
子句(clause):
SQL语句由子句构成,有些子句是必需的,有些则是可选的。
一个子句通常由一个关键字加上所提供的数据组成。
例如:输入
SELECT prod_name FROM Products ORDER BY prod_name
输出:
提示:
1.在使用ORDER BY子句时,应该保证它是SELECT语句中最后一条子句,否则将出现错误消息。
2.ORDER BY子句使用非检索的列排序数据是完全合法的。
3.2 按多个列排序
有时我们需要对不止一个列进行数据排序,如果要按多个列排序,只需要多个列名之间用逗号分隔即可(像选择多个列时一样)。
例如:输入
SELECT prod_id,prod_name,prod_price FROM Products ORDER BY prod_price,prod_name
输出:
上述SQL语句中,仅在多个行具有相同的prod_price值时,才会按prod_name进行排序。如果prod_price列中的值都是唯一的,则不会按prod_name排序。
3.3 按列位置排序
ORDER BY还支持按相对位置进行排序。
例如:输入
SELECT prod_id,prod_name,prod_price FROM Products ORDER BY 2,3
输出:
上述SQL语句中ORDER BY 2,3表示先按prod_name排序再按照prod_price进行排序,2,3表示查询出来的结果列。
3.4 指定排序方向
数据的排列顺序不限于升序排列(A - Z),ORDER BY子句还支持降序排列(Z - A),为了进行降序排列,我们必须使用DESC关键字。
例如:输入
SELECT prod_id,prod_name,prod_price FROM Products ORDER BY prod_price DESC
输出:
上述SQL语句以价格的降序来排列产品。
如果打算用多个列进行排序时:输入
SELECT prod_id,prod_name,prod_price FROM Products ORDER BY prod_price DESC,prod_name
输出:
上述SQL语句中,DESC关键字只应用到直接位于其前面的列名。所以,如果要对多个列进行降序排列就要对每一列指定DESC关键字。
提示:
DESC是DESCENDING的缩写与其相对的是ASC(ASCENDING),两个关键字都可以使用,但实际上,ASC并没有多大用处,因为升序是默认的。
小结
这一课学习了如何用SELECT语句的ORDER BY 子句对检索出的数据进行排序。这个子句必须是 SELECT 语句中的最后一条子句。根据需要,可以利用它在一个或多个列上对数据进行排序。