我们已经学会了从数据表里取出 某几个列的SQL, 思考一下:如果数据表里有100万行数据?真实世界中确实存在,世界上肯定有100万条狗那么多. 如果数据量这么大 之前的SQL语句很可能运行时会崩溃(想象一下你一次性下载1T的电影)
真实情况下,我们很少直接查所有行,即使查询出来也看不完。为了更精确的查询出特定数据,我们需要学习一个新的SQL语法:SELECT
查询的 WHERE
子句.
一个查询的 WHERE
子句用来描述哪些行应该进入结果,具体就是通过 condition条件 限定这些行的属性满足某些具体条件。比如:WHERE 体重大于 10KG的狗。你可以把
WHERE
想象成一个 筛子,每一个特定的筛子都可以筛下某些豆子。
SELECT column, another_column, …
FROM mytable
WHERE condition
AND/OR another_condition
AND/OR …;
可以用 AND
or OR
这两个关键字来组装多个条件(表示并且,或者) (ie.
num_wheels >= 4 AND doors <= 2 这个组合表示 num_wheels属性 大于等于 4 并且 doors 属性小于等于 2).
下面的具体语法规则,可以用来筛选数字属性列(包括 整数,浮点数)
:
Operator(关键字) | Condition(意思) | SQL Example(例子) |
=, !=, < <=, >, >= | Standard numerical operators 基础的 大于,等于等比较 | col_name != 4 |
BETWEEN … AND … | Number is within range of two values (inclusive) 在两个数之间 | col_name BETWEEN 1.5 AND 10.5 |
NOT BETWEEN … AND … | Number is not within range of two values (inclusive) 不在两个数之间 | col_name NOT BETWEEN 1 AND 10 |
IN (…) | Number exists in a list 在一个列表 | col_name IN (2, 4, 6) |
NOT IN (…) | Number does not exist in a list 不在一个列表 | col_name NOT IN (1, 3, 5) |
越是精确的条件筛选,会让结果更容易理解,同时因为条件在返回之前筛掉不必要的结果,SQL的运行速度也会快很多(想象一下你只是想看下最近有哪些大片上映,你没必要下载整个电影看一遍).
虽然之前我们的SQL 关键之如 SELECT
, WHERE
, AND,OR
都是大写的,但SQL其实是兼容写成 select,where小写的.
大写这些关键字有助于我们把 关键字 和 你的表名,列名区分开,让 SQL更容易理解。
我们的任务会让你从 Movies 表按特定条件筛选数据,赶紧挑战一下吧!.