3.1 排序数据
3.2 按多个列排序
3.3 按列位置排序
3.4 指定排序方向
3.5 code
3.6 挑战题
这一课讲授如何使用 SELECT 语句的
ORDER BY 子句,根据需要排序检索出的数据。
3.1 排序数据
输入:SELECT prod_name
FROM Products
ORDER BY prod_name;
分析:除了指示 DBMS 软件对prod_name列以字母顺序排序数据的 ORDER BY子句外,这条语句 与前面的语句相同。
输出:
排序结果 概念1 注意3.2 按多个列排序
经常需要按不止一个列进行数据排序。例如,如果要显示雇员名单,可能希望按姓和名排序(首先按姓排序,然后在每个姓中再按名排序)。如果多个雇员有相同的姓,这样做很有用。
要按多个列排序,只须指定这些列名,列名之间用逗号分开即可(就像选择多个列时那样)。
输入:SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
分析:代码检索 3 个列,并按其中两个列对结果进行排序——首先按价格,然后按名称排序
输出:
按多个排序结果3.3 按列位置排序
输入:SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2, 3;
分析:可以看到,这里的输出与上面的查询相同,不同之处在于 ORDER BY 子句。SELECT 清单中指定的是选择列的相对位置而不是列名。ORDER BY 2表示按 SELECT 清单中的第二个列 prod_price 进行排序。ORDER BY 2,3 表示先按 prod_price,再按 prod_name 进行排序。
输出:
结果 提示3.4 指定排序方向
数据排序不限于升序排序(从 A 到 Z),这只是默认的排序顺序。还可以使用 ORDER BY 子句进行降序(从 Z 到 A)排序。为了进行降序排序,必须指定 DESC 关键字。
输入:SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC;
分析:以价格降序来排序产品(最贵的排在最前面)
输出:
按prod_price降序输出结果输入:SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC,prod_name;
分析:先以降序排列prod_price,再按升序排列prod_name。DESC关键字只应用到直接位于其前面的列名。
输出:
多列排序结果请注意,DESC 是 DESCENDING的缩写,这两个关键字都可以使用。与 DESC相对的是 ASC(或ASCENDING),在升序排序时可以指定它。但实际上,ASC 没有多大用处,因为升序是默认的(如果既不指定 ASC 也不指定DESC,则假定为 ASC)。
3.5 code
这一课学习了如何用 SELECT 语句的 ORDER BY 子句对检索出的数据进行排序。这个子句必须是 SELECT 语句中的最后一条子句。根据需要,可以利用它在一个或多个列上对数据进行排序。
-- --------第3课--------
#3.1 排序数据
SELECT prod_name
FROM Products
ORDER BY prod_name;
#3.2 按多个列排序
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
#3.3 按列位置排序
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY 2, 3;
#3.4 指定排序方向(升or降)
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC;
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price DESC,prod_name;
3.6 挑战题
1. 编写 SQL 语句,从 Customers 中检索所有的顾客名称(cust_name),并按从 Z 到 A 的顺序显示结果。
SELECT cust_name
FROM Customers
ORDER BY cust_name 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;
改正:
SELECT vend_name
FROM Vendors
ORDER BY vend_name DESC;
参考:https://forta.com/books/0135182794/challenges/
网友评论