根据条件选择记录
在现实世界中,我们通常只需要选择,更新或删除满足某些条件的那些记录,例如属于某个年龄段或某个国家/地区的用户等。
WHERE子句用于与SELECT,UPDATE和DELETE。但是,您将在接下来的章节中看到将此子句与其他语句一起使用。
语法
WHERE子句与SELECT 语句一起使用,仅提取满足指定条件的那些记录。基本语法可以通过以下方式给出:
SELECT column_list FROM table_name WHERE condition;
在这里,column_list是要获取其值的数据库表的列/字段的名称,例如name,age,country等。但是,如果要获取表中所有可用列的值,则可以使用以下语法:
SELECT * FROM table_name WHERE condition;
现在,让我们看一些示例来演示其实际工作原理。
假设我们在数据库中有一个名为sfjvipcom的表,其中包含以下记录:
+--------+--------------+------------+--------+---------+
| 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语句将从sfjvipcom表中返回其薪水大于7000的所有employee 。该WHERE子句只是过滤掉不需要的数据。
SELECT * FROM sfjvipcom
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 sfjvipcom
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 sfjvipcom
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 |