目录

  1. SQL WHERE 子句简介
  2. WHERE 子句基本语法
  3. WHERE 子句常用操作符
  4. WHERE 子句与其他 SQL 子句结合使用
  5. WHERE 子句查询示例
  6. WHERE 子句常见问题
  7. 参考资料

SQL WHERE 子句简介

WHERE 子句用于 SQL 查询中筛选记录,以确保返回的数据符合特定条件。它通常与 SELECTUPDATEDELETE 语句一起使用。通过 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. ANDOR 子句结合

当多个条件需要同时满足时,使用 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 子句常见问题

  1. 如何使用 WHERE 子句过滤 NULL 值?
    使用 IS NULL 来筛选列为 NULL 的记录: SELECT * FROM products WHERE discontinued IS NULL;
  2. 如何使用 WHERE 子句查询多个值?
    使用 IN 操作符,可以同时匹配多个值: SELECT * FROM employees WHERE department IN ('Sales', 'HR', 'IT');
  3. 如何使用 WHERE 子句进行字符串匹配?
    使用 LIKE 操作符结合通配符: SELECT * FROM customers WHERE name LIKE 'A%';

参考资料