在MySQL中,WHERE子句是SQL查询语句的一个重要组成部分,它用于过滤结果集,只返回满足特定条件的记录。以下是WHERE子句的一些基本用法和示例:

  1. 基本条件
  • 使用WHERE子句来指定一个或多个条件。例如,查询employees表中年龄大于30的员工:
SELECT * FROM employees WHERE age > 30;
  1. 等于(=)条件
  • 检查列的值是否等于指定的值。例如,查询employees表中名为"John"的员工:
SELECT * FROM employees WHERE name = 'John';
  1. 不等于(<> 或 !=)条件
  • 检查列的值是否不等于指定的值。例如,查询employees表中职位不是"Manager"的员工:
SELECT * FROM employees WHERE position <> 'Manager';
  1. 大于(>)和小于(<)条件
  • 检查列的值是否大于或小于指定的值。例如,查询employees表中工资大于50000的员工:
SELECT * FROM employees WHERE salary > 50000;
  1. 大于等于(>=)和小于等于(<=)条件
  • 检查列的值是否大于等于或小于等于指定的值。例如,查询employees表中年龄在25到35之间的员工:
SELECT * FROM employees WHERE age BETWEEN 25 AND 35;
  1. IN条件
  • 检查列的值是否在指定的列表中。例如,查询employees表中部门ID为1或2的员工:
SELECT * FROM employees WHERE department_id IN (1, 2);
  1. LIKE条件
  • 用于模糊匹配字符串。例如,查询employees表中名字以"J"开头的员工:
SELECT * FROM employees WHERE name LIKE 'J%';
  1. AND、OR和NOT逻辑运算符
  • 结合多个条件。例如,查询employees表中年龄大于30且工资小于60000的员工:
SELECT * FROM employees WHERE age > 30 AND salary < 60000;
  • 查询年龄大于30或工资大于50000的员工:
SELECT * FROM employees WHERE age > 30 OR salary > 50000;
  • 查询年龄不大于30的员工:
SELECT * FROM employees WHERE age <= 30;
  1. NULL条件
  • 检查列的值是否为NULL。例如,查询employees表中没有设置部门ID的员工:
SELECT * FROM employees WHERE department_id IS NULL;
  1. 复合条件
  • 结合多个逻辑运算符和条件。例如,查询employees表中年龄大于30且工资在40000到50000之间,或者名字为"John"的员工:
SELECT * FROM employees WHERE (age > 30 AND (salary BETWEEN 40000 AND 50000)) OR name = 'John';

在使用WHERE子句时,确保条件表达式正确无误,并且考虑到了数据库中数据的实际情况。复杂的WHERE子句可能会影响查询性能,因此在设计查询时,应尽量优化条件表达式。