WHERE
WHERE 是 SQL 的过滤器。不加它,返回全表;加上它,只返回符合条件的行。WHERE 后面跟一个条件表达式,数据库逐行判断:TRUE 的留下,FALSE 或 UNKNOWN 的跳过。
WHERE 不仅用在 SELECT 中——UPDATE 和 DELETE 更需要它。没有 WHERE 的 UPDATE/DELETE 会殃及整张表,这是 DML 操作中最需要警惕的。条件表达式支持比较运算符(=、>、<、>=、<=、<>)、逻辑运算符(AND、OR、NOT),以及 BETWEEN、IN、LIKE、IS NULL 等专用操作符。
标准写法:
SELECT 列名 FROM 表名
WHERE 条件表达式;
以飞翔科技为例:
-- 查技术部员工
SELECT emp_name, basic_salary
FROM employees
WHERE dept_code = 2;
-- 查工资超过两万的员工
SELECT emp_name, basic_salary, performance_bonus
FROM employees
WHERE basic_salary + IFNULL(performance_bonus, 0) > 20000;
-- 查 2018 年入职且年龄在 25~30 之间的员工
SELECT emp_name, join_year, age
FROM employees
WHERE join_year = 2018 AND age BETWEEN 25 AND 30;
-- 查没有绩效奖金的员工
SELECT emp_name, basic_salary
FROM employees
WHERE performance_bonus IS NULL;
WHERE 是 SQL 的精准打击工具——条件写得越具体,返回的行就越少越精准。没有 WHERE 是在扫射,有 WHERE 才是点射。