SQL WHERE

根据条件选取记录

在前一章中,我们学习了如何从表中获取所有记录。但是,在现实场景中,我们通常只需要选取、更新或删除那些满足特定条件的记录,比如属于特定的年龄组或国家的用户。

WHERE子句用于SELECT、UPDATE和DELETE。

语法

WHERE子句与SELECT语句一起使用可以只选取满足指定条件的记录。基本语法如下:

SELECT column_list FROM table_name WHERE condition;

在这里,column_list是要获取的字段,如名称、年龄、国家等。但是,如果想获取表中所有字段,可以使用以下语法:

SELECT * FROM table_name WHERE condition;

现在,让我们来看一些例子。

前面章节里,在demo数据库中,我们创建了名为persons的表,其中包含以下记录:

+----+-------------------+------------+-------------+
| id | name              | birth_date | phone       |
+----+-------------------+------------+-------------+
|  1 | Peter Wilson      | 1990-07-15 | 0711-020361 |
|  2 | Carrie Simpson    | 1995-05-01 | 0251-031259 |
|  3 | Victoria Ashworth | 1996-10-17 | 0695-346721 |
+----+-------------------+------------+-------------+

使用WHERE子句过滤记录

下面的SQL语句将从persons表中返回所有id >= 2的记录。WHERE子句过滤掉了不需要的数据。

示例

SELECT * FROM persons
WHERE id >= 2;

执行之后,输出将如下所示:

+----+-------------------+------------+-------------+
| id | name              | birth_date | phone       |
+----+-------------------+------------+-------------+
|  2 | Carrie Simpson    | 1995-05-01 | 0251-031259 |
|  3 | Victoria Ashworth | 1996-10-17 | 0695-346721 |
+----+-------------------+------------+-------------+

类似地,选取记录时可以指定字段,如下所示:

示例

SELECT id, name FROM persons
WHERE id >= 2;

执行上述语句后,将得到如下输出:

+----+-------------------+
| id | name              |
+----+-------------------+
|  2 | Carrie Simpson    |
|  3 | Victoria Ashworth |
+----+-------------------+

下面的语句将获取名字包含“Simpson”的记录。

示例

SELECT * FROM persons
WHERE name like '%Simpson%';

该语句将产生以下输出:

+----+----------------+------------+-------------+
| id | name           | birth_date | phone       |
+----+----------------+------------+-------------+
|  2 | Carrie Simpson | 1995-05-01 | 0251-031259 |
+----+----------------+------------+-------------+

WHERE子句中允许的运算符

SQL支持许多运算符,可以在WHERE子句中使用,常用的运算符总结如下。

运算符 描述 例子
= 等于 WHERE id = 2
> 大于 WHERE age > 30
< 小于 WHERE age < 18
>= 大于等于 WHERE rating >= 4
<= 小于等于 WHERE price <= 100
LIKE 简单的模式匹配 WHERE name LIKE 'Dav'
IN 检查指定值是否匹配列表或子查询中的任何值 WHERE country IN ('USA', 'UK')
BETWEEN 检查指定值是否在值的范围内 WHERE rating BETWEEN 3 AND 5


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载