在数据库中,如果检索出的数据没有明确规定排序顺序,则不应该假定检索的数据顺序有任何意义。
我们排序数据,一般用ORDER BY 关键字,并且使用在SELECT语句中的最后一条字句。
例如想要在productS表中,按prod_name对数据进行排序:
SELECT PROD_NAME
FROM PODUCTS
ORDER BY PROD_NAME;
这样prod_name列就会按照字母顺序输出。
若想对多列进行排序,像这样:
SELECT PRO_ID,PROD_PRICE,PROD_NAME
FROM PRODUCTS
ORDER BY PROD_PRICE,PROD_NAME;
对多列进行排序时, 先按照prod_price进行排序,遇到prod_price一样的产品,则按照prod_name字母顺序排序,若没有相同价格的产品,则不会按照产品名进行排序。
一般排序结果都是按升序输出(如A到Z,1-9),这是因为数据库系统默认使用ASC(ASCENDING),所以在需要按降序输出结果时,需要在ORDER BY字句中列名后面使用DESC(DESCENDING),如下面代码显示:
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC, prod_name;
当然,如果产品名也需要使用降序,则也需要在后面加上DESC。
挑战题
1. 编写SQL 语句,从Customers 中检索所有的顾客名称(cust_names),
并按从Z 到A 的顺序显示结果。
SELECT cust_names
FROM Customers
ORDER BY cust_names DESC;
2. 编写SQL 语句,从Orders 表中检索顾客 ID(cust_id)和订单号
(order_num),并先按顾客ID 对结果进行排序,再按订单日期倒序
排列。
SELECT cust,id,order_num
FROM Orders
ORDER BY cust_id,order_date DESC;
3. 显然,我们的虚拟商店更喜欢出售比较贵的物品,而且这类物品有很多。
编写SQL 语句,显示OrderItems 表中的数量和价格(item_price),
并按数量由多到少、价格由高到低排序。
SELECT quantity,item_price
FROM OrderItems
ORDER BY quantity DESC,item_price DESC;
4. 下面的SQL 语句有问题吗?(尝试在不运行的情况下指出。)
SELECT vend_name,
FROM Vendors
ORDER vend_name DESC;
1)vend_name后面加了逗号 ,一般只有在列名之间使用逗号;
2)ORDER 后面少了BY,不能漏掉。