数据库中包含大量数据,有时只需要查询表中的指定数据,即对数据进行过滤。在SELECT语句中,可通过WHERE 子句对数据进行过滤,语法格式如下:
SELECT 字段名1,字段名2,…,字段名n
FROM 表名
WHERE 查询条件
1. 常规操作符查询
在WHERE子句中,提供一系列的条件操作符,如下所示:
操作符 | 说明 |
---|---|
= | 相等 |
!= | 不相等 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
IN | 在范围内 |
BETWEEN | 位于两指之间 |
1.1 常规操作符查询
#查询价格为10.2元的水果名称
SELECT f_name,f_price
FROM fruits
WHERE f_price = 10.2;
1.2 带BETWEEN AND的范围查询
#查询价格在2.00元到10.20元的水果名称和价格
SELECT f_name,f_price
FROM fruits
WHERE f_price BETWEEN 2.00 AND 10.20;
1.3 带IN关键字的查询
#查询s_id为101和102的记录
SELECT s_id,f_name,f_price
FROM fruits
WHERE s_id IN(101,102);
1.4 带NOT关键字的查询
SELECT s_id,f_name,f_price
FROM fruits
WHERE s_id NOT IN(101,102);
1.5 空值检查
SELECT f_name,f_price
FROM fruits
WHERE f_price IS NULL;
2. 用通配符过滤(LIKE)
使用条件操作符和IN,NOT等关键字查询都是对已知指进行过滤。如需对某特定文本进行过滤,就需要使用通配符进行匹配。
2.1 百分号(%)通配符
'%'通配符可匹配多个字符,且区分大小写。
#查找所有以'b'开头的水果
SELECT f_id,f_name
FROM fruits
WHERE f_name LIKE 'b%';
2.2 下划线(_)通配符
'_'通配符只能匹配单个字符。
#查询以字母y结尾,且y前面有四个字母的记录
SELECT f_id,f_name
FROM fruits
WHERE f_name LIKE '____y';
3. 用正则表达式进行过滤(REGEXP)
正则表达式是用来匹配文本的特殊的串(字符集合)。
3.1 查询以特定字符或字符串开头的记录
SELECT *
FROM fruits
WHERE f_name REGEXP '^b';
3.2 查询以特定字符或字符串结尾的记录
SELECT *
FROM fruits
WHERE f_name REGEXP 'y$';
3.3 用符号"."来替换字符串中的任意一个字符
SELECT *
FROM fruits
WHERE f_name REGEXP 'a.g';
3.4 使用"*"和"+"来匹配多个字符
SELECT *
FROM fruits
WHERE f_name REGEXP '^ba*';
3.5 匹配指定字符串
#查询f_name字段值包含字符串"on"或者"ap"的记录
SELECT *
FROM fruits
WHERE f_name REGEXP 'on|ap';
3.6 匹配指定字符中的任意一个
方括号[] 指定一个字符集合,只匹配其中任何一个字符。
SELECT *
FROM fruits
WHERE f_name REGEXP '[ot]';
3.7 匹配指定字符以外的字符
[^字符集合] 匹配不在指定集合中的任何字符。
SELECT *
FROM fruits
WHERE f_name REGEXP '[^a-e1-2]';
3.8 使用{n,}或者{n,m}来指定字符串连续出现的次数
SELECT *
FROM fruits
WHERE f_name REGEXP 'x{2,}';