sql select语句(where)过滤数据
-
where基本使用
#返回 ms_user表age小于13的所有项的name,age SELECT name,age FROM ms_user WHERE age<13;
WHERE语句操作符
操作符 说明 = 等于 < 小于 <= 小于等于 > 大于 >= 大于等于 != 不等于 <> 不等于 BETWEEN 在指定的两个数之间 #这些操作符很好理解就不做过多的记载和解释了 注:其中 != 和 <>的作用是相同的,因为习惯于其他编程语言的习惯,我们通常用的都是 != 例: SELECT * FROM ms_user WHERE id != 3; SELECT * FROM ms_user WHERE id <> 3; 注: 当进行过滤数据时,字符串需要使用单引号 '' 例: SELECT * FROM ms_user WHERE name = 'lisi'; 注: 当需要同时使用 ORDER BY 子句和 WHERE 子句时,应该让 ORDER BY 位于 WHERE 之后,否则将会产生错误 例: SELECT * FROM ms_user WHERE age < 13 ORDER BY age; BETWEEN 用法 : 使用BETWEEN必须只等连个值---所需范围的低端值和高端值。 两个值用 AND 连接 例: SELECT * FROM ms_user WHERE age BETWEEN 5 AND 10; # 检索ms_user表中age在 5到10之间的数据;
-
空值检索
在创建表示我们可以指定一个列是否可以包含空值。在一个列不包含值的时候,称其为包含空值NULL # 注:NULL 无值(no value), 他与字段包含0,空字符串或包含空格不同。 SELECT 中有一个特殊的WHERE 子句,可以检索具有NULL值的列 :(IS NULL) 例: SELECT * FROM ms_user WHERE name IS NULL;
-
数据过滤
1. AND OR ,与java 语言中的 && || 类似,用法也类似 例: SELECT * FROM ms_user WHERE name = 'wzy' AND age < 21; SELECT * FROM ms_user WHERE age < 5 or age >15;
注:AND的优先级高于OR, 当AND 和 OR 同时使用的时候SQL 优先处理AND ,我们可以通过圆括号来明确分组相应的操作符,来达到自己的目的。
SELECT * FROM ms_user WHERE (age = 3 or age = 13) AND name = 'wzy'; 注:任何时候使用具有 AND 和 OR 操作符的WHERE 子句,都应该使用圆括号明确地分组操作符,不要过分依赖于默认计算顺序,加括号又没坏处,还增加程序的可读性。
IN 操作符
2. IN 用处应该是和 OR 差不多,甚至一样。 IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。 SELECT * FROM ms_user WHERE age IN(3,5); SELECT * FROM ms_user WHERE age = 3 OR age = 5;
NOT 操作符
3. NOT 用来否定其后跟的条件的关键字 SELECT * FROM ms_user WHERE age NOT IN(3,5); #返回 ms_user 表中 age 不等于 3或5 的数据。 AND OR IN 都可以和NOT 一起使用。
-
用通配符进行过滤
- 通配符: 用来匹配值的一部分的特殊字符。
- 搜索模式 : 由字面值,通配符或两者组合构成的搜索条件
1. % 百分号通配符 用法: a% :匹配以a开头的所有字符串 %a : 匹配以a结尾的所有字符串 %a% : 匹配包含a的所有字符串 a%b : 匹配以a开头以b结尾的所有字符串 在使用通配符的时候,必须使用LIKE 操作符。 LIKE 指示 MYSQL 后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。 例: SELECT * FROM ms_user WHERE name LIKE '%zy'; 注: WHERE name LIKE '%'; 看起来可以匹配任何值,但有一个例外 NULL, NULL 不能匹配到。 2. _ 下划线通配符,与%的用途一样,但下划线只匹配单个字符,而不匹配多个字符。 例: SELECT * FROM ms_user WHERE name LIKE '_zy'; # 他只能匹配到 wzy, 但匹配不到 wwzy,zy ,因为 _ 只能匹配到zy 前的一个字符,不能多也不能少。