Kodokon kodokon.com

SELECT 与 WHERE:读取并筛选数据

学习用 SELECT 选择列、用 WHERE 筛选行,并用 LIKE 搜索模式。

8 分钟 · 3 题

在 Kodokon 中打开本课

如果你正在开始一个新的会话,请先重新运行第 1 课的 CREATE TABLE + INSERT 脚本。SELECT 查询只读取数据,从不修改它。在 SELECT 这个词之后,你列出要显示的列:这称为投影(选择列)。在 FROM 之后,你指明要读取的表。

SQL
SELECT title, price FROM books;
投影:只保留 title 和 price 两列

要只保留某些,可以加上一个 WHERE 子句,后面跟一个条件。条件用一个运算符把某个列和某个值进行比较:=(等于)、<>!=(不等于)、<(小于)、>(大于)、<=>=。提醒一下:文本值要写在单引号之间。

SQL
SELECT * FROM books WHERE genre = 'sf';

SELECT title, year FROM books WHERE year < 1950;
第一条返回 4 行,第二条也返回 4 行

你可以组合多个条件:AND 要求两者都为真,OR 要求至少一个为真,而 NOT 会反转一个条件。当你对优先级拿不准时,就加上圆括号。

SQL
SELECT title, price FROM books
WHERE genre = 'sf' AND price < 8;

SELECT title FROM books
WHERE genre = 'conte' OR genre = 'aventure';
AND:2 行(1984、Les Robots);OR:3 行

最后,LIKE 运算符把文本和一个模式进行比较:通配符 % 代表任意长度的字符序列(甚至可以是空的),而 _ 恰好代表一个字符。例如,'D%' 表示 "以 D 开头",而 '%an%' 表示 "包含 an"。

SQL
SELECT title FROM books WHERE author LIKE 'A%';

SELECT title FROM books WHERE title LIKE 'd%';

SELECT author FROM books WHERE author LIKE 'V_rne';
以 A 开头的作者、以 d 开头的标题,然后是 Verne

知识检测

确认你已牢记本课的重点内容。

  1. 哪条查询只显示书的标题?
    • SELECT * FROM books;
    • SELECT title FROM books;
    • SELECT books FROM title;
  2. 条件 WHERE price < 7 会返回什么?
    • 价格严格小于 7 的行
    • 价格恰好等于 7 的行
    • 表中的前 7 行
  3. 模式 LIKE 'D%' 会匹配什么?
    • 包含字母 D 的文本
    • 以 D 结尾的文本
    • 以 D 开头的文本