【MySQL】WHERE子句

数据库中包含大量数据,有时只需要查询表中的指定数据,即对数据进行过滤。在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,}';

你可能感兴趣的:(【MySQL】WHERE子句)