美文网首页《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必知必会----第四版(一)

    记录自己学习这本书的过程此篇文章包括检索、排序检索数据和过滤数据 通往其他文章的入口:SQL必知必会----第四版...

  • SQL 学习笔记

    SQL基础 参考书籍: 《SQL必知必会》 检索数据 过滤数据 函数 分组数据 子查询 简单联结 法一: 法二: ...

  • SQL必知必会

    《SQL必知必会》SQL是使用 广泛的数据库语言,几乎所有重要的DBMS都支持SQL。《SQL必知必会(第4版)》...

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

    3.1 排序数据 3.2 按多个列排序 3.3 按列位置排序 3.4 指定排序方向 3.5 code 3.6 挑战...

  • SQL必知必会(检索数据)

    SELECT 查询的基础语法 创建了一个王者荣耀英雄数据表,这张表里一共有 69 个英雄,23 个属性值(不包括英...

  • 第二周学习总结

    本周继续学习了SQL必知必会这本书,从第2科开始,已学到第7课。本周主要学习了数据的检索和过滤。主要有如下收获: ...

  • MySql 插入数据

    插入数据 插入检索出来的数据 参考书籍: MySQL必知必会

  • 《SQL必知必会》第2课 检索数据

    2.1 SELECT 语句 关键字(keyword)作为SQL 组成部分的保留字。关键字不能用作表或列的名字。附录...

  • 《SQL必知必会 第4版》PDF高清完整版-免费下载

    《SQL必知必会 第4版》PDF高清完整版-免费下载 《SQL必知必会 第4版》PDF高清完整版-免费下载 下载地...

  • 《SQL必知必会》—— 检索1

    普通检索 排序检索 过滤数据 通配符过滤(只能用于文本字段(字符串)) 计算字段 函数 汇总数据(不需要检索实际数...

网友评论

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

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