SQL必知必会(4)过滤数据
在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。
WHERE子句在表名(FROM子句)之后。
1 | SELECT prod_name, prod_price |
prod_name | prod_price |
---|---|
Fish bean bag toy | 3.49 |
Bird bean bag toy | 3.49 |
Rabbit bean bag toy | 3.49 |
WHERE子句的位置。如果同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则报错。
WHERE子句操作符
操作符 | 说明 | 操作符 | 说明 |
---|---|---|---|
= | 等于 | > | 大于 |
<> | 不等于 | >= | 大于等于 |
!= | 不等于 | !> | 不大于 |
< | 小于 | BETWEEN | 在指定的两个值之间 |
<= | 小于等于 | IS NULL | 为NULL值 |
!< | 不小于 |
检查单个值:
1 | SELECT prod_name, prod_price |
prod_name | prod_price |
---|---|
Fish bean bag toy | 3.49 |
Bird bean bag toy | 3.49 |
Rabbit bean bag toy | 3.49 |
8 inch teddy bear | 5.99 |
12 inch teddy bear | 8.99 |
Raggedy Ann | 4.99 |
King doll | 9.49 |
Queen doll | 9.49 |
不匹配检查:
1 | SELECT vend_id, prod_name |
vend_id | prod_name |
---|---|
BRS01 | 8 inch teddy bear |
BRS01 | 12 inch teddy bear |
BRS01 | 18 inch teddy bear |
FNG01 | King doll |
FNG01 | Queen doll |
<>
和!=
通常可以互换,但取决于DBMS是否支持。
范围值检查:
1 | SELECT prod_name, prod_price |
prod_name | prod_price |
---|---|
8 inch teddy bear | 5.99 |
12 inch teddy bear | 8.99 |
King doll | 9.49 |
Queen doll | 9.49 |
使用BETWEEN时,必须指定两个值,这两个值必须用AND关键字分隔。BETWEEN匹配的是“闭区间”。
空值检查:
NULL:无值,它与字段包含0、空字符串和空格都不同。
1 | SELECT prod_name |
Empty set (0.00 sec)
1 | SELECT cust_name |
cust_name |
---|
Kids Place |
The Toy Store |
确定值是否为NULL,不能直接检查是否 = NULL。
NULL和非匹配。“未知”有特殊的含义,数据库不知道它们是否匹配,所以在进行匹配过滤或非匹配过滤时,不会返回含有NULL的行。过滤数据时,一定要验证被过滤列中含NULL的行,确实出现在返回的数据中。