SQL必知必会(3)排序检索数据

子句:SQL语句由子句构成,有些子句是必须的,有些是可选的。

排序数据:

1
2
SELECT prod_name
FROM Products;
prod_name
Fish bean bag toy
Bird bean bag toy
Rabbit bean bag toy
8 inch teddy bear
12 inch teddy bear
18 inch teddy bear
Raggedy Ann
King doll
Queen doll
1
2
3
SELECT prod_name
FROM Products
ORDER BY prod_name;
prod_name
12 inch teddy bear
18 inch teddy bear
8 inch teddy bear
Bird bean bag toy
Fish bean bag toy
King doll
Queen doll
Rabbit bean bag toy
Raggedy Ann

在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句。否则报错。

通常ORDER BY子句中使用的列,是为显示而选择的列。但是用非检索的列排序数据是完全合法的。

按多个列排序:检索3列,先按价格然后按名称排序。

1
2
3
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
prod_id prod_price prod_name
BNBG02 3.49 Bird bean bag toy
BNBG01 3.49 Fish bean bag toy
BNBG03 3.49 Rabbit bean bag toy
RGAN01 4.99 Raggedy Ann
BR01 5.99 8 inch teddy bear
BR02 8.99 12 inch teddy bear
RYL01 9.49 King doll
RYL02 9.49 Queen doll
BR03 11.99 18 inch teddy bear

按列位置排序:

1
2
3
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2, 3;
prod_id prod_price prod_name
BNBG02 3.49 Bird bean bag toy
BNBG01 3.49 Fish bean bag toy
BNBG03 3.49 Rabbit bean bag toy
RGAN01 4.99 Raggedy Ann
BR01 5.99 8 inch teddy bear
BR02 8.99 12 inch teddy bear
RYL01 9.49 King doll
RYL02 9.49 Queen doll
BR03 11.99 18 inch teddy bear

ORDER BY 2,3 表示按SELECT清单中,先按第2列排序,再按第3列排序。

当想排序的列没有出现在SELECT清单中时,不能使用这项技术。

指定排序方向(升序、降序):

1
2
3
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC;
prod_id prod_price prod_name
BR03 11.99 18 inch teddy bear
RYL01 9.49 King doll
RYL02 9.49 Queen doll
BR02 8.99 12 inch teddy bear
BR01 5.99 8 inch teddy bear
RGAN01 4.99 Raggedy Ann
BNBG01 3.49 Fish bean bag toy
BNBG02 3.49 Bird bean bag toy
BNBG03 3.49 Rabbit bean bag toy

默认升序,使用DESC关键字实现降序。

用多个列排序:

1
2
3
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name;
prod_id prod_price prod_name
BR03 11.99 18 inch teddy bear
RYL01 9.49 King doll
RYL02 9.49 Queen doll
BR02 8.99 12 inch teddy bear
BR01 5.99 8 inch teddy bear
RGAN01 4.99 Raggedy Ann
BNBG02 3.49 Bird bean bag toy
BNBG01 3.49 Fish bean bag toy
BNBG03 3.49 Rabbit bean bag toy

DESC关键字只应用到直接位于其前面的列名。

如果想在多个列上进行降序排序,必须对每一列都指定DESC关键字。

DESC - DESCENDING,ASC - ASCENDING。

区分大小写和排序顺序:在字典排序顺序中,A与a相同,这是大多数数据库管理系统默认的。