SQL 入门笔记(四)过滤数据
使用WHERE子句
数据库一般都包含大量的数据,很少需要检索表中的所有行,通常只需要检索一部分
检索所需的数据需要指定搜索条件(searsh criteria)或称为过滤条件(filter condition)
这时就需要在FROM子句后加上WHERE子句
1 | SELECT prod_name, prod_price |

提示:SQL 过滤与应用过滤
当然你也可以选择在接收到数据后在应用层过滤,但 墙裂不建议这样做 ,一来会浪费带宽,而来更加浪费时间
注意:WHERE 子句的位置
在同时使用 ORDER BY 和 WHERE 子句时,应该让 ORDER BY 位于 WHERE 之后,否则将产生错误 (关于 ORDER BY ,请看上一篇)
WHERE 子句的操作符
下表列出了所有操作符
| 操作符 | 说明 |
|---|---|
= |
等于 |
<> |
不等于 |
!= |
不等于 |
< |
小于 |
<= |
小于等于 |
!< |
不小于 |
> |
大于 |
>= |
大于等于 |
!> |
不大于 |
BETWEEN |
在指定的两个值之间 |
IS NULL |
为NULL值 |
注意:操作符兼容
表中列出的操作符有些是冗余的(如<>与!=,!<与>=),并非所有的DBMS都支持这些操作符(例如MySQL不支持!>与!<),请参阅你所使用的DBMS的文档
下面来看几个例子
比较单个值
列出所有价格小于 10 美元的产品
1 | SELECT prod_name, prod_price |

不匹配检查
列出所有供应商不是DLL01的产品
1 | SELECT vend_id ,prod_name |

范围值检查
要检查某个范围的值,可以使用BETWEEN操作符
检索价格在 5 美元和 10 美元之间的所有产品
1 | SELECT prod_name, prod_price |

空值检查
在创建表时,可以指定表中能不能有空值(NULL)
NULL不等于 0,空字符串,或是空格,NULL就是NULL,什么数据都没有
确定值是否为 NULL ,不能简单地检查是否等于 NULL ,而必须使用 IS NULL 子句
1 | SELECT prod_name, prod_price |

因为表中没有没有这样的行,所以没有返回数据,但是在Customers表中有NULL值
1 | SELECT cust_name |

可见有两位顾客没有留下邮箱地址
注意:NULL 和非匹配
通过过滤选择不包含指定值的所有行时,你可能希望返回含NULL值的行,但因为NULL的特殊性,实际上这做不到
评论
GiscusTwikoo