343 字
2 分钟
MySQL学习笔记 (5)
2026-08-29
NOTE

基于 MySQL 26.7。比较运算符

WHERE 子句#

WHERE 用于筛选记录。

SELECT last_name, salary
FROM employee
WHERE salary >= 8000
AND dept_no = 'D01';

运算符:

运算符描述
=等于
<>不等于
>大于
<小于
>=大于等于
<=小于等于

AND、OR、NOT#

  • AND:并且
  • OR:或者
  • NOT:非

NOT 优先于 ANDAND 优先于 OR。可以用括号改变顺序:

WHERE dept_no = 'D01' OR dept_no = 'D02' AND salary > 9000
-- D01 的全部,加上 D02 且工资大于 9000 的
WHERE (dept_no = 'D01' OR dept_no = 'D02') AND salary > 9000

IN#

IN 用于在多个可能值中匹配:

WHERE dept_no IN ('D01', 'D02', 'D03')
WHERE dept_no NOT IN ('D01', 'D02')

BETWEEN#

BETWEEN 选取介于两个值之间的数据,包含两端:

WHERE salary BETWEEN 5000 AND 12000

相当于 salary >= 5000 AND salary <= 12000

LIKE#

LIKE 用于在 WHERE 子句中搜索指定模式。

通配符描述
%替代 0 个或多个字符
_替代一个字符
WHERE last_name LIKE '张%'
WHERE last_name LIKE '_明'
WHERE last_name NOT LIKE '%test%'

如果要匹配 %_ 本身,使用 ESCAPE

WHERE title LIKE '%10$%%' ESCAPE '$'

IS NULL#

IS NULL 用于查找 NULL 值。

WHERE manager_id IS NULL
WHERE manager_id IS NOT NULL

注意:不能写成 manager_id = NULL

CASE#

CASE 根据条件返回不同的值:

SELECT last_name,
CASE
WHEN salary >= 12000 THEN 'high'
WHEN salary >= 8000 THEN 'mid'
ELSE 'low'
END AS band
FROM employee;

也可以写成:

CASE salary WHEN 0 THEN 'zero' ELSE 'nonzero' END

没有 ELSE 时,不匹配的结果是 NULL。


参考#

  1. MySQL 26.7 · Comparison Operators
  2. MySQL 26.7 · Logical Operators
  3. MySQL 26.7 · LIKE
  4. MySQL 26.7 · CASE
  5. ISO/IEC 9075(SQL<2023>
MySQL学习笔记 (5)
https://blog.chuwu.top/posts/sql/mysql5/
作者
ChuwuYo
发布于
2026-08-29
许可协议
CC BY-NC-SA 4.0