目录
SQL WHERE 子句简介
WHERE
子句用于 SQL 查询中筛选记录,以确保返回的数据符合特定条件。它通常与 SELECT
、UPDATE
、DELETE
语句一起使用。通过 WHERE
子句,可以限制返回的数据量,过滤掉不需要的记录。
在 SQL 中,WHERE
子句是执行查询时指定条件的一个关键部分。它能够帮助你从大量数据中筛选出特定的记录,提高查询效率。
WHERE 子句基本语法
WHERE
子句的基本语法如下:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
SELECT
:指定需要查询的列。FROM
:指定查询的表名。WHERE
:定义查询条件,只有满足条件的记录才会被返回。
示例
SELECT * FROM employees WHERE salary > 50000;
- 该查询将返回所有
salary
大于 50000 的employees
表记录。
WHERE 子句常用操作符
WHERE
子句中可以使用各种操作符来指定条件。常用的操作符包括:
1. 比较操作符
=
:等于!=
或<>
:不等于<
:小于>
:大于<=
:小于或等于>=
:大于或等于
SELECT * FROM products WHERE price > 100;
- 该查询返回
products
表中价格大于 100 的所有记录。
2. 逻辑操作符
AND
:两个条件都为真时返回真。OR
:两个条件中至少有一个为真时返回真。NOT
:否定条件,条件不成立时返回真。
SELECT * FROM employees WHERE salary > 50000 AND department = 'Sales';
- 该查询返回
salary
大于 50000 且department
为 ‘Sales’ 的所有记录。
3. BETWEEN 操作符
BETWEEN
用于指定范围,包含边界值。
SELECT * FROM orders WHERE order_date BETWEEN '2021-01-01' AND '2021-12-31';
- 该查询返回 2021 年内所有的订单记录。
4. LIKE 操作符
LIKE
用于匹配字符串模式。通常与通配符一起使用:
%
:表示任意数量的字符。_
:表示一个字符。
SELECT * FROM customers WHERE name LIKE 'A%';
- 该查询返回所有以字母 ‘A’ 开头的客户名称。
5. IN 操作符
IN
用于匹配多个可能的值。
SELECT * FROM employees WHERE department IN ('HR', 'IT', 'Sales');
- 该查询返回
department
为 ‘HR’、’IT’ 或 ‘Sales’ 的所有员工。
6. IS NULL 操作符
IS NULL
用于判断列值是否为 NULL。
SELECT * FROM products WHERE discontinued IS NULL;
- 该查询返回所有没有停止销售的产品(
discontinued
为 NULL)。
WHERE 子句与其他 SQL 子句结合使用
WHERE
子句可以与其他 SQL 子句结合使用,进行更复杂的数据筛选。
1. 与 AND
或 OR
子句结合
当多个条件需要同时满足时,使用 AND
,当多个条件中至少有一个满足时,使用 OR
。
SELECT * FROM employees WHERE salary > 50000 AND department = 'IT';
- 该查询返回
salary
大于 50000 且department
为 ‘IT’ 的员工记录。
SELECT * FROM employees WHERE department = 'IT' OR department = 'Sales';
- 该查询返回
department
为 ‘IT’ 或 ‘Sales’ 的所有员工记录。
2. 与 ORDER BY
子句结合使用
WHERE
子句用于筛选数据,而 ORDER BY
子句用于排序查询结果。
SELECT * FROM employees WHERE salary > 50000 ORDER BY salary DESC;
- 该查询返回所有
salary
大于 50000 的员工,并按salary
降序排序。
3. 与 LIMIT
子句结合使用
LIMIT
子句用于限制返回的记录数,通常与 WHERE
子句一起使用,获取特定条件下的前几条记录。
SELECT * FROM employees WHERE department = 'Sales' LIMIT 5;
- 该查询返回
department
为 ‘Sales’ 的前 5 个员工记录。
WHERE 子句查询示例
示例 1:查询价格大于 50 的所有产品
SELECT * FROM products WHERE price > 50;
- 该查询将返回
products
表中所有价格大于 50 的产品。
示例 2:查询名字以 ‘J’ 开头的员工
SELECT * FROM employees WHERE name LIKE 'J%';
- 该查询将返回
employees
表中所有名字以 ‘J’ 开头的员工记录。
示例 3:查询加入日期在 2020 年之后的客户
SELECT * FROM customers WHERE join_date > '2020-01-01';
- 该查询将返回
customers
表中加入日期晚于 2020 年 1 月 1 日的所有客户。
示例 4:查询薪资在 40000 到 60000 之间的员工
SELECT * FROM employees WHERE salary BETWEEN 40000 AND 60000;
- 该查询将返回
employees
表中薪资在 40000 到 60000 之间的所有员工。
WHERE 子句常见问题
- 如何使用
WHERE
子句过滤 NULL 值?
使用IS NULL
来筛选列为 NULL 的记录:SELECT * FROM products WHERE discontinued IS NULL;
- 如何使用
WHERE
子句查询多个值?
使用IN
操作符,可以同时匹配多个值:SELECT * FROM employees WHERE department IN ('Sales', 'HR', 'IT');
- 如何使用
WHERE
子句进行字符串匹配?
使用LIKE
操作符结合通配符:SELECT * FROM customers WHERE name LIKE 'A%';
发表回复