SQL AND & OR 运算符
在本教程中,您将学习如何使用带有 WHERE
子句的 AND
& OR
运算符来根据多个条件过滤记录。
根据条件选择记录
在上一章中,我们学习了如何使用带有 WHERE
子句的单个条件从表中获取记录。 但有时您需要根据多种条件筛选记录,例如选择年龄大于 30 且地区为美国的用户,选择价格低于 100 美元且评分大于 4 的产品等。
AND
运算符
AND
运算符是一个逻辑运算符,它结合了两个条件,并且仅当两个条件都为 TRUE
时才返回 TRUE
。 AND
运算符常用于 WHERE
clause of the SELECT
, UPDATE
, DELETE
语句中,用于形成过滤结果集的条件。
SELECTcolumn1_name
,column2_name
,columnN_name
FROMtable_name
WHEREcondition1
ANDcondition2
;
让我们看看一些例子来展示它是如何工作的。
假设我们的数据库中有一个名为 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 | +--------+--------------+------------+--------+---------+
使用带有 AND
运算符的 WHERE
子句
以下 SQL 语句将仅返回 employees 表中薪水大于 7000 且 dept_id 等于 5 的员工。
SELECT * FROM employees
WHERE salary > 7000 AND dept_id = 5;
执行后,你会得到类似这样的输出:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+
OR
运算符
类似地,OR
运算符也是组合两个条件的逻辑运算符,但是当其中一个条件为 TRUE
时,它返回 TRUE
。
以下 SQL 语句将返回 employees 表中薪水大于 7000 或 dept_id 等于 5 的所有员工。
SELECT * FROM employees
WHERE salary > 7000 OR dept_id = 5;
这次你会得到类似这样的输出:
+--------+--------------+------------+--------+---------+ | 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 | +--------+--------------+------------+--------+---------+
结合 AND
& OR
运算符
您还可以结合 AND
和 OR
来创建复杂的条件表达式。
以下 SQL 语句将返回所有工资大于 5000 且 dept_id 等于 1 或 5 的员工。
SELECT * FROM employees
WHERE salary > 5000 AND (dept_id = 1 OR dept_id = 5);
执行上述查询后,您将获得如下输出:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | +--------+--------------+------------+--------+---------+
Advertisements