过滤数据 即 对检索数据指定搜索条件
一、WHERE 子句
-
简述
在 SELECT 语句中,数据根据 WHERE 子句中的指定的搜索条件进行过滤。
WHERE子句的位置:首先,WHERE子句 需在 FROM 之后给出,其次如果与 ORDER BY子句 同时使用,应当让 ORDER BY 位于 WHERE 之后。
-
WHERE子句操作符
操作符 说明 = 等于 <> 不等于 != 不等于 < 小于 <= 小于等于 > 大于 >= 大于等于 BETWEEN 在指定的两个值之间
-
指定检索条件
3.1 单个值检索
输入1:SELECT 列名1,列名2 FROM 表名 WHERE 列名1 = ‘xxx’;
输入2:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 < xxx;
注意:单引号用来限定字符串,如果将值与字符串类型的列进行比较,则需要限定单引号。将值与数值列进行比较不用引号3.2 不匹配检索
输入3:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 <> xxx;
或者是
输入4:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 != xxx;3.3 范围值检索
为了检索某个范围的值,需使用 BETWEEN操作符 。该操作符需要两个值,并通过 AND关键字 连接。BETWEEN匹配范围中的所有值,包括指定的开始值和结束值。
输入5:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 BETWEEN x1 AND x2;3.4 空值检索
WHERE子句 中有一个特殊的子句 IS NULL 子句
输入6:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 IS NULL;
-
组合WHERE子句
4.1 AND 与 OR 操作符
MySQL允许给出多个WHERE子句,这些子句通过 AND 和 OR 操作符连接。其中 ,AND 的优先级高于 OR。此外,多个子句之间可以通过 圆括号 明确地分组操作符,建议不要使用默认优先级,便于消除歧义。
输入1:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 = xxx1 AND 列名2 = xxx2;
输入2:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 = xxx1 OR 列名2 = xxx2;
输入3:SELECT 列名1,列名2 FROM 表名 WHERE (列名2 = xxx1 OR 列名2 = xxx2) AND 列名1 = ‘xxx’;4.2 IN 操作符
IN 操作符 用来指定条件范围,范围中地每个条件都可以进行匹配。IN 的合法取值范围由逗号分隔,并且全都括在圆括号中。输入4:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 IN (xxx1, xxx2);
输入4等同于输入1 ,IN 操作符可以完成与OR操作符相同的功能。使用IN 操作符的优点:
1)在使用长的合法选项清单时,IN 操作符的语法更清楚且更直观
2)在使用IN时,计算的次序更容易管理(因为使用的操作符更少)
3)IN 操作符一般比OR 操作符快
4)IN 操作符最大的优点是可以包含其他 SELECT语句 ,使得能够更动态地建立WHERE子句。4.3 NOT 操作符
WHERE子句中的 NOT操作符 有且只有一个功能,即 用于否定它之后的任何条件。
输入5:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 NOT IN (xxx1, xxx2);MySQL支持使用 NOT 对 IN BETWEEN 和 EXISTS 子句取反。
二、通配符过滤
通配符 是用来匹配 值的 一部分的特殊字符。其本身实际是SQL的WHERE子句中有特殊含义的字符。
搜索模式 是由字面值、通配符 或 二者组合构成的搜索条件。
在搜索子句中若要使用通配符,必须使用LIKE操作符。
通配符可以在搜索模式中的任意位置使用,并且可以使用多个通配符。
-
百分号(%)通配符
% 表示任何字符出现任意次数(0,1,…, n)。
输入1:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 LIKE ‘abc%’;
分析:该句子将检索任意以 abc 开头的词。输入2:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 LIKE ‘%abc%’;
分析:该句子将检索任意含有 abc 的词,不论其前后出现什么字符。输入3:SELECT 列名1,列名2 FROM 表名 WHERE 列名2 LIKE ‘a%bc’;
分析:该句子将检索以 a开头,以bc结尾 的词。 -
下划线( _ )通配符
_ 用途与 % 一样,但是下划线只匹配单个字符 -
通配符的使用
1)通配符不可过度使用。若其他操作符能达到相同目的,就用其他操作符
2)若无必要,不建议将其用在搜索模式的开始处,会导致搜索速度较慢。
3)注意通配符的位置,避免错位。