在本章中,我们将深入探讨 SQL 中的 WHERE 子句。WHERE 子句用于从数据库表中筛选特定条件的数据。它是 SQL 查询中最常用的部分之一,允许我们根据特定条件检索数据。通过掌握 WHERE 子句的使用方法,你可以更有效地查询数据库,并获取你需要的信息。
WHERE 子句的基本语法
WHERE 子句通常用于 SELECT、UPDATE 和 DELETE 语句中。它的基本语法如下:
SELECT column1, column2, ... FROM table_name WHERE condition;
这里,column1, column2, ...
是你想从表中检索的列名,table_name
是你要从中检索数据的表名,而 condition
则是你设置的筛选条件。
示例
假设有一个名为 employees
的表,其中包含员工的姓名、部门和薪水等信息。如果我们想找出所有薪水高于 5000 的员工,可以使用以下 SQL 语句:
SELECT name, department, salary FROM employees WHERE salary > 5000;
这条语句将返回 employees
表中所有薪水大于 5000 的记录。
使用比较运算符
在 WHERE 子句中,你可以使用多种比较运算符来指定筛选条件。以下是一些常用的比较运算符及其示例:
>
(大于)<
(小于)>=
(大于等于)<=
(小于等于)=
(等于)<>
或!=
(不等于)
示例:使用不同的比较运算符
大于
SELECT name, salary FROM employees WHERE salary > 6000;
这条语句将返回所有薪水大于 6000 的员工。
小于
SELECT name, salary FROM employees WHERE salary < 4000;
这条语句将返回所有薪水低于 4000 的员工。
大于等于
SELECT name, salary FROM employees WHERE salary >= 7000;
这条语句将返回所有薪水大于或等于 7000 的员工。
小于等于
SELECT name, salary FROM employees WHERE salary <= 3000;
这条语句将返回所有薪水小于或等于 3000 的员工。
等于
SELECT name, department FROM employees WHERE department = 'Sales';
这条语句将返回所有在销售部门工作的员工。
不等于
SELECT name, department FROM employees WHERE department != 'HR';
这条语句将返回不在人力资源部门的所有员工。
使用逻辑运算符
除了比较运算符外,你还可以使用逻辑运算符来组合多个条件。常见的逻辑运算符包括:
AND
(并且)OR
(或者)NOT
(不)
这些运算符可以帮助你构建更复杂的查询。
示例:使用逻辑运算符
AND
SELECT name, salary, department FROM employees WHERE salary > 5000 AND department = 'Engineering';
这条语句将返回所有薪水高于 5000 且在工程部门工作的员工。
OR
SELECT name, salary FROM employees WHERE salary < 3000 OR salary > 8000;
这条语句将返回所有薪水低于 3000 或高于 8000 的员工。
NOT
SELECT name, department FROM employees WHERE NOT department = 'Marketing';
这条语句将返回不在市场营销部门的所有员工。
使用 BETWEEN 运算符
BETWEEN 运算符用于选取介于两个值之间的数据范围。这个范围包括了开始值和结束值。
示例
SELECT name, salary FROM employees WHERE salary BETWEEN 4000 AND 7000;
这条语句将返回所有薪水在 4000 至 7000 之间(包括 4000 和 7000)的员工。
使用 IN 运算符
IN 运算符用于指定一个列的值属于一组预定义的值中的一个。
示例
SELECT name, department FROM employees WHERE department IN ('Engineering', 'Sales', 'Marketing');
这条语句将返回所有在工程、销售或市场营销部门工作的员工。
使用 LIKE 运算符
LIKE 运算符用于搜索列中的指定模式。它通常与通配符一起使用,例如 %
和 _
。
%
表示零个、一个或多个字符。_
表示单个字符。
示例
SELECT name, email FROM employees WHERE email LIKE '%@gmail.com';
这条语句将返回所有电子邮件地址以 @gmail.com
结尾的员工。
SELECT name, department FROM employees WHERE name LIKE 'A_';
这条语句将返回所有名字以 "A" 开头且后面跟一个任意字符的员工。
使用 IS NULL 和 IS NOT NULL
IS NULL 和 IS NOT NULL 运算符用于检查某列是否包含空值。
示例
SELECT name, phone FROM employees WHERE phone IS NULL;
这条语句将返回所有电话号码为空的员工。
SELECT name, phone FROM employees WHERE phone IS NOT NULL;
这条语句将返回所有电话号码不为空的员工。
总结
WHERE 子句是 SQL 查询的核心部分之一,它允许你基于特定条件过滤数据。通过理解并熟练运用各种比较运算符、逻辑运算符、BETWEEN、IN、LIKE 以及 IS NULL/IS NOT NULL 运算符,你可以构建出强大而灵活的查询来满足你的需求。接下来,我们将在后续章节中继续深入探讨其他 SQL 查询技巧。