SQL Lesson 2: 条件查询 (constraints) (Pt. 1)

我们已经学会了从数据表里取出 某几个列的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;
注:这里的 condition 都是描述属性列的,具体会在下面的表格体现。

可以用 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 表按特定条件筛选数据,赶紧挑战一下吧!.

Sorry but the SQLBolt exercises require a more recent browser to run.
Please upgrade to the latest version of Internet Explorer, Chrome, or Firefox!

Otherwise, continue to the next lesson: SQL Lesson 2: Queries with constraints (Pt. 1)
Table(表): movies
练习 do it — 请完成如下任务
我不会做求助!求助!

继续努力 学下一节

你获得一个机会,加微信进群,可以互相学习