![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/db933304747b7dc817b8f491def3265c.png)
前言
WHERE
子句的基本格式如下:
SELECT ……(列名) FROM ……(表名) WHERE ……(子句条件)
本文将介绍子句条件的三种不同方式:比较运算符、逻辑运算符、通配符过滤;
比较运算符
Mysql中比较运算符的含义参见以下:
- 等于:
=
- 不等于:
!=
- 小于:
<
- 大于:
>
- 小于等于:
<=
- 大于等于:
>=
- 指定在两数之间:
BETWEEN
- 为空指:
IS NULL
注意:BETWEEN边界:BETWEEN a AND b
,,两边均是闭区间。即[a, b]
例如:
BETWEEN
SELECT name, hp_max FROM heros WHERE hp_max BETWEEN 5399 AND 6811;
IS NULL
mysql> SELECT name, hp_max FROM heros WHERE hp_max IS NULL;
Empty set (0.00 sec)
说明:表种hp_max
字段没有存在空值的行;
逻辑运算符
Mysql中逻辑运算符的含义参见以下:
- 并且:
AND
- 或者:
OR
- 在指定条件范围内:
IN
- 非:
NOT
SELECT name, hp_max, mp_max FROM heros WHERE ((hp_max+mp_max) > 8000 OR hp_max > 6000) AND mp_max > 1700 ORDER BY (hp_max+mp_max) DESC;
注意:逻辑运算符优先级:() > AND > OR
使用通配符进行过滤
使用通配符需要与关键子LIKE
搭配,看以下例子:
例子1:
mysql> SELECT name FROM heros WHERE name LIKE '%太%';
+--------------+
| name |
+--------------+
| 东皇太一 |
| 太乙真人 |
+--------------+
例子2:
mysql> SELECT name FROM heros WHERE name LIKE '_%太%';
+--------------+
| name |
+--------------+
| 东皇太一 |
+--------------+
1 row in set (0.00 sec)
从上可知以下通配符规则:
%
通配符:匹配任意字符串出现的任意次数;_
通配符:匹配单个任意字符;
注意:在实际操作中,建议少用通配符。因为它有可能会使得索引实现,见下:
%太%
,%太
,就算名字上有索引,也会走全表扫描;太%
,会走索引;