MySQL WHERE 子句
在 MySQL 中,WHERE
子句是用于过滤查询结果的关键工具。它允许你指定条件,从而只返回满足这些条件的记录。无论是简单的查询还是复杂的多表连接,WHERE
子句都是不可或缺的一部分。
什么是 WHERE 子句?
WHERE
子句用于在 SELECT
、UPDATE
、DELETE
等语句中指定条件,以便只操作或返回满足这些条件的记录。它通常跟在 FROM
子句之后,语法如下:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
其中,condition
是一个逻辑表达式,可以是比较运算符(如 =
、>
、<
等)或逻辑运算符(如 AND
、OR
、NOT
)的组合。
基本语法
1. 使用比较运算符
比较运算符用于比较两个值。常见的比较运算符包括:
=
:等于>
:大于<
:小于>=
:大于等于<=
:小于等于<>
或!=
:不等于
示例:
假设我们有一个名为 employees
的表,包含以下数据:
id | name | age | department |
---|---|---|---|
1 | Alice | 30 | HR |
2 | Bob | 25 | IT |
3 | Charlie | 35 | Finance |
4 | David | 28 | IT |
如果我们想查询年龄大于 30 的员工,可以使用以下 SQL 语句:
SELECT * FROM employees WHERE age > 30;
输出:
id | name | age | department |
---|---|---|---|
3 | Charlie | 35 | Finance |
2. 使用逻辑运算符
逻辑运算符用于组合多个条件。常见的逻辑运算符包括:
AND
:所有条件都必须为真OR
:至少一个条件为真NOT
:条件为假
示例:
如果我们想查询年龄大于 25 且在 IT 部门工作的员工,可以使用以下 SQL 语句:
SELECT * FROM employees WHERE age > 25 AND department = 'IT';
输出:
id | name | age | department |
---|---|---|---|
4 | David | 28 | IT |
3. 使用 IN
和 BETWEEN
IN
:用于匹配列表中的任意一个值BETWEEN
:用于匹配某个范围内的值
示例:
如果我们想查询年龄在 25 到 30 岁之间的员工,可以使用以下 SQL 语句:
SELECT * FROM employees WHERE age BETWEEN 25 AND 30;
输出:
id | name | age | department |
---|---|---|---|
1 | Alice | 30 | HR |
2 | Bob | 25 | IT |
4 | David | 28 | IT |
4. 使用 LIKE
进行模式匹配
LIKE
用于在 WHERE
子句中进行模式匹配。常用的通配符包括:
%
:匹配任意数量的字符(包括零个字符)_
:匹配单个字符
示例:
如果我们想查询名字以 "A" 开头的员工,可以使用以下 SQL 语句:
SELECT * FROM employees WHERE name LIKE 'A%';
输出:
id | name | age | department |
---|---|---|---|
1 | Alice | 30 | HR |
实际应用场景
场景 1:过滤特定日期的订单
假设我们有一个 orders
表,包含以下数据:
order_id | customer_id | order_date | amount |
---|---|---|---|
1 | 101 | 2023-10-01 | 100.00 |
2 | 102 | 2023-10-02 | 200.00 |
3 | 103 | 2023-10-03 | 150.00 |
如果我们想查询 2023 年 10 月 2 日的订单,可以使用以下 SQL 语句:
SELECT * FROM orders WHERE order_date = '2023-10-02';
输出:
order_id | customer_id | order_date | amount |
---|---|---|---|
2 | 102 | 2023-10-02 | 200.00 |
场景 2:过滤特定价格区间的产品
假设我们有一个 products
表,包含以下数据:
product_id | product_name | price |
---|---|---|
1 | Laptop | 1200 |
2 | Smartphone | 800 |
3 | Tablet | 500 |
如果我们想查询价格在 500 到 1000 之间的产品,可以使用以下 SQL 语句:
SELECT * FROM products WHERE price BETWEEN 500 AND 1000;
输出:
product_id | product_name | price |
---|---|---|
2 | Smartphone | 800 |
3 | Tablet | 500 |
总结
WHERE
子句是 MySQL 中用于过滤数据的重要工具。通过使用比较运算符、逻辑运算符、IN
、BETWEEN
和 LIKE
等,你可以灵活地定义查询条件,从而获取所需的数据。
在实际应用中,WHERE
子句通常与其他 SQL 子句(如 ORDER BY
、GROUP BY
等)结合使用,以实现更复杂的查询功能。
附加资源
练习
- 查询
employees
表中年龄小于 30 且不在 IT 部门工作的员工。 - 查询
orders
表中金额大于 150 的订单。 - 查询
products
表中价格在 1000 以上的产品。
通过完成这些练习,你将更好地掌握 WHERE
子句的使用方法。