Coursera 笔记

Module 03 · Intermediate SQL

Sorting Result Sets对 SELECT 语句结果集进行排序

Coursera ↗

欢迎学习本课程,本视频将介绍一些检索关系数据库数据和对结果集显示进行排序的高级技术。


学习目标

完成本课程后,您将能够:

  • 描述如何通过升序或降序对结果集进行排序。
  • 解释如何指定用于排序的列。

数据检索与默认顺序

数据库管理系统(DBMS)的主要目的之一是促进数据的检索。

  • 最简单的 SELECT 语句:
    SQL
    SELECT * FROM table_name;
    
    
    例如,在简化的图书馆数据库模型中,SELECT * FROM Book 将显示 Book 表中所有列的四行数据。
  • 检索特定列:
    我们可以选择仅列出书名:
    SQL
    SELECT Title FROM Book;
    
    
    然而,在这种情况下,结果的显示顺序似乎没有特定的规律。如果能以字母顺序显示结果集,将更加方便。

使用ORDER BY子句排序结果

要对结果集进行排序,我们使用 ORDER BY** 子句**。

ORDER BY** 基础用法**

  • 作用: ORDER BY 子句用于查询中,以便按指定的列对结果集进行排序。
  • 默认顺序: 如果未明确指定,结果集默认按升序 (Ascending Order, ASC) 排序。

1. 按列名升序排序 (默认)

要按书名(Title)的字母顺序排序,我们将 ORDER BY 子句添加到 SELECT 语句中:

SQL

SELECT Title FROM Book 
ORDER BY Title; 
-- 默认是升序 (ASC)

2. 按列名降序排序 (DESC)

要以降序 (Descending Order) 排序,需要在 ORDER BY 子句后使用关键字 DESC:

SQL

SELECT Title FROM Book 
ORDER BY Title DESC;

排序细节:

如果排序关键字(例如书名的前几个词)相同,排序将从字符开始不同的位置继续进行。

3. 按列序号排序

指定排序列的另一种方法是使用列的序号(即该列在 SELECT 语句的列列表中的位置)。

  • 示例:
    SQL
    SELECT Title, Pages FROM Book 
    ORDER BY 2;
    
    
  • 解析:
    • 在此 SELECT 语句中,列列表中的第二个列是 Pages。
    • ORDER BY 2 指示排序顺序基于 Pages 列的值。
    • 由于没有指定 DESC,结果集将按 Pages(页数)的升序排列。
  • 结果: 结果集将按书的页数升序排列。

总结

现在,您已经掌握了:

  • 如何通过 ORDER BY** 子句对结果集进行升序**(默认或 ASC)或降序(DESC)排序。
  • 如何通过列名或列的序号来指定用于排序的列。