美文网首页《SQL必知必会》
《SQL必知必会》第3课 排序检索数据

《SQL必知必会》第3课 排序检索数据

作者: 一条快乐的鱼儿 | 来源:发表于2021-10-27 13:54 被阅读0次

    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/

    相关文章

      网友评论

        本文标题:《SQL必知必会》第3课 排序检索数据

        本文链接:https://www.haomeiwen.com/subject/thtsaltx.html