SQL 基础教程
SQL 连接
SQL 高级教程
SQL 参考资料

SQL WHERE 子句

在本教程中,您将学习如何使用 SQL 从表中选择特定记录。

根据条件选择记录

在上一章中,我们学习了如何从一个表或表列中获取所有记录。 但是,在现实世界的场景中,我们通常只需要选择、更新或删除那些满足特定条件的记录,例如属于某个年龄组或地区的用户等。

WHERE 子句与 SELECT, UPDATE, and DELETE 一起使用。 但是,您会在接下来的章节中看到此子句与其他语句的用法。

语法

WHERE 子句与 SELECT 语句一起使用以仅提取满足指定条件的那些记录。 基本语法可以通过以下方式给出:

SELECT column_list FROM table_name WHERE condition;

此处,column_list 是您要获取其值的数据库表的列/字段的名称,例如 name, age, country 等。 但是,如果要获取表中所有可用列的值,可以使用以下语法:

SELECT * FROM table_name WHERE condition;

现在,让我们看看一些示例来演示它的实际工作原理。

假设我们的数据库中有一个名为 employees 的表,其中包含以下记录:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |    NULL |
+--------+--------------+------------+--------+---------+

使用 WHERE 子句过滤记录

下面的 SQL 语句将返回 employees 表中所有薪水大于 7000 的雇员。WHERE 子句只是过滤掉不需要的数据。

SELECT * FROM employees
WHERE salary > 7000;

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

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

如您所见,输出仅包含薪水大于 7000 的员工。同样,您可以从特定列中获取记录,如下所示:

SELECT emp_id, emp_name, hire_date, salary
FROM employees
WHERE salary > 7000;

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

+--------+--------------+------------+--------+
| emp_id | emp_name     | hire_date  | salary |
+--------+--------------+------------+--------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |
+--------+--------------+------------+--------+

以下语句将获取员工 id 为 2 的员工的记录。

SELECT * FROM employees
WHERE emp_id = 2;

该语句将产生以下输出:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
+--------+--------------+------------+--------+---------+

这次我们在输出中只有一行,因为 emp_id 对于每个员工都是唯一的。


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
Advertisements