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的行,确实出现在返回的数据中。