Coursera 笔记

Module 01 · Getting Started with SQL

SELECT Statement使用 SELECT 语句检索数据

Coursera ↗

课程目标

在本课结束时,您将能够:

  • 从关系型数据库表中检索数据。
  • 理解谓词(Predicate)的用途。
  • 识别使用 WHERE 子句的 SELECT 语句语法。
  • 列出关系型数据库管理系统(RDBMS)支持的比较运算符。

SELECT 语句与数据检索

数据库管理系统的主要目的不仅是存储数据,还包括促进数据的检索。

在创建关系型数据库表并使用 INSERT 语句插入数据后,我们需要查看这些数据。此时,我们使用 SELECT语句。

什么是 SELECT 语句?

  • SELECT 语句是**数据操作语言(DML)**语句的一种。
  • DML 语句用于读取和修改数据。
  • SELECT 语句通常被称为查询(Query)。
  • 执行此查询后获得的输出被称为结果集(Result Set)或结果表(Result Table)。

检索所有数据(SELECT *)

SELECT 语句最简单的形式是:

SELECT ∗ FROM table_name;\text{SELECT } \boldsymbol{*} \text{ FROM } \text{table\_name;}

  • 在 SQL 中,星号(∗\boldsymbol{*})代表所有列。

示例: 基于“Book”实体,我们创建了名为 Book 的表,并使用 INSERT 语句向其添加了行数据。

SELECT ∗ FROM Book;\text{SELECT } \boldsymbol{*} \text{ FROM } \text{Book;}

  • 执行此语句将返回 Book** 表中所有列的全部数据行**(例如,返回四行数据)。

检索所有列的另一种方式

您也可以通过在 SELECT 语句中单独指定所有列名来检索所有行和所有列的数据。


检索列的子集

您不必总是检索表中的所有列,可以仅检索列的子集。

示例: 仅检索 Book 表中的 Book_ID 和 Title 两列。

SELECT Book_ID, Title FROM Book;\text{SELECT Book\_ID, Title FROM Book;}

  • 在这种情况下,仅显示这两列的数据,但仍显示所有四行数据。
  • 注意: 显示的列的顺序始终与 SELECT 语句中指定的顺序匹配。

使用 WHERE 子句限制结果集

我们经常需要根据特定条件来限制返回的结果集。例如:“我们想知道 Book_ID 为 B1 的书的书名(Title)。”

关系操作允许我们使用 WHERE** 子句**来限制结果集。

谓词(Predicate)

  • WHERE 子句始终需要一个谓词。
  • 谓词是一种条件,其评估结果为 True(真)、False(假)或 Unknown(未知)。
  • 谓词用于 WHERE 子句的搜索条件中。

SELECT语句中使用WHERE子句的语法

SELECT column_list FROM table_name WHERE predicate;\text{SELECT } \text{column\_list} \text{ FROM } \text{table\_name} \text{ WHERE } \text{predicate;}

示例: 检索 Book_ID 为 B1 的书的 Book_ID 和 Title。

SELECT Book_ID, Title FROM Book WHERE Book_ID = ’B1’;\text{SELECT Book\_ID, Title FROM Book WHERE Book\_ID = 'B1';}

  • 结果: 结果集现在被限制为仅有一行数据,即该谓词评估结果为 True 的行。

比较运算符

上述示例使用了等于(=)比较运算符。RDBMS 支持多种比较运算符,用于构造 WHERE 子句中的谓词:

运算符 描述
== 等于(Equal to)
>> 大于(Greater than)
<< 小于(Less than)
≥\ge 大于或等于(Greater than or equal to)
≤\le 小于或等于(Less than or equal to)
≠\ne 或 !=!= 不等于(Not equal to)