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