343 字
2 分钟
MySQL学习笔记 (5)
NOTE基于 MySQL 26.7。比较运算符
WHERE 子句
WHERE 用于筛选记录。
SELECT last_name, salaryFROM employeeWHERE salary >= 8000AND dept_no = 'D01';运算符:
| 运算符 | 描述 |
|---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
AND、OR、NOT
AND:并且OR:或者NOT:非
NOT 优先于 AND,AND 优先于 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 > 9000IN
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 NULLWHERE 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 bandFROM employee;也可以写成:
CASE salary WHEN 0 THEN 'zero' ELSE 'nonzero' END没有 ELSE 时,不匹配的结果是 NULL。
参考
MySQL学习笔记 (5)
https://blog.chuwu.top/posts/sql/mysql5/