Module 03 · Intermediate SQL
Using String Patterns and Ranges使用 SELECT 语句中的字符串模式检索数据
欢迎学习本课程,本视频将介绍一些从关系数据库表中检索数据的高级技术。
学习目标
完成本课程后,您将能够描述如何通过使用字符串模式、范围或值集合来简化 SELECT 语句。
数据检索基础
数据库管理系统(DBMS)的主要目的不仅是存储数据,还包括促进数据的检索。

- 最简单的
SELECT语句形式:
SQL
例如,SELECT * FROM table_name;SELECT * FROM Book将返回Book表中所有列的所有数据行(元组)。 - 检索列子集:
您可以只检索部分列,例如:
SQLSELECT Book_ID, Title FROM Book; - 使用 WHERE 子句限制结果集:
您可以使用 WHERE 子句来限制返回的结果集,该子句需要一个评估结果为真、假或未知(True, False, or Unknown)的谓词 (Predicate)(即条件)。
例如:
SQLSELECT Title FROM Book WHERE Book_ID = 'B1';
一、使用字符串模式 (LIKE谓词)
当您不清楚 WHERE 子句中需要指定的确切值,但知道该值符合某种模式时,可以使用字符串模式来搜索匹配条件的数据行。
LIKE** 谓词**
LIKE谓词用于WHERE子句中,以便在列中搜索特定模式。- 百分号 (
%) 被用作通配符 (Wildcard Character),用于替代其他字符。%可以位于模式之前、之后,或者前后都放置。
LIKE** 示例**
假设我们不记得作者的全名,但记得他们的名字 (firstname) 以字母 'R' 开头:
SQL
SELECT firstname
FROM Author
WHERE firstname LIKE 'R%';
- 结果: 此查询将返回
Author表中所有名字以字母 'R' 开头的行。 - 示例结果集: 假设返回 Raul 和 Rav 两行数据。
二、使用数值范围 (BETWEEN AND运算符)
当需要检索某个数值范围内的数据时,可以使用 BETWEEN AND 运算符来简化查询。
BETWEEN AND** 运算符**
BETWEEN AND用于比较两个值,指定一个范围。- 范围内的值是包含性的 (Inclusive),即包括指定的起始值和结束值。
BETWEEN AND** 示例**
例如,如果我们要检索页数大于或等于 290 且小于或等于 300 的图书列表。
- 使用比较运算符的写法 (较繁琐):
SQL... WHERE pages >= 290 AND pages <= 300 - 使用
BETWEEN AND的简化写法:
SQL
简化后的SELECT * FROM Book WHERE pages BETWEEN 290 AND 300;SELECT语句更容易编写和阅读,但返回的结果集是相同的。
三、使用值集合 (IN运算符)
对于无法归类到范围内的离散数据值,如果需要指定多个相等条件,可以使用 IN** 运算符**来简化查询。
IN** 运算符**
IN运算符允许我们在WHERE子句中指定一组值 (a set of values)。- 该运算符接受一个表达式列表进行比较。
IN** 示例**
假设我们要检索作者来自澳大利亚 (Australia) 或巴西 (Brazil) 的数据。
- 传统写法 (较冗长): 需要重复列出两个国家的值。如果国家列表更长(例如加拿大、印度和中国),
WHERE子句会变得非常长。 - 使用
IN的简化写法:
SQLSELECT * FROM Author WHERE country IN ('Australia', 'Brazil');
总结
现在,您已经掌握了如何通过使用以下方式来简化 SELECT 语句:
- 字符串模式 (
LIKE) - 范围 (
BETWEEN AND) - 值集合 (
IN)