4.1 使用WHERE子句
数据表中一般包含大量的数据,很少需要检索表中的所有行。通常会根据特定的需要提取表数据的子集,只检索所需数据需要指定搜索条件。
在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤,WHERE子句在表名(FROM子句)之后给出。
例如:输入
SELECT prod_name,prod_price FROM Products WHERE prod_price=2.5
输出:
上述SQL语句从表中检索两个列,只返回prod_price值为2.5所在的行。
提示:
在同时使用WHERE子句和ORDER BY子句时,应该让ORDER BY子句位于WHERE子句之后。
4.2 WHERE子句操作符
下表列出了SQL支持的所有条件操作符:
操作符 | 说明 |
---|---|
= | 等于 |
< > | 不等于 |
! = | 不等于 |
< | 小于 |
< = | 小于等于 |
! < | 不小于 |
> | 大于 |
> = | 大于等于 |
! > | 不大于 |
BETWEEN | 在指定的两个值之间 |
IS NULL | 为NULL值 |
提示:操作符兼容
表中列出的某些操作符是冗余的(如< >与! =相同,! <相当于>=) ,并非所有的DBMS都支持这些操作符。
4.3 检查单个值
下面我们来看看其他几个使用操作符的例子:
例1:列出所有价格下雨10美元的产品,输入
SELECT prod_name,prod_price FROM Products WHERE prod_price < 10
输出:
例2:列出所有价格小于等于10美元的产品,输入
SELECT prod_name,prod_price FROM Products WHERE prod_price <= 10
输出:
4.4 不匹配检查
例如:列出所有供应商不是1001的产品,输入
SELECT vend_id,prod_name,prod_price FROM Products WHERE vend_id != '1001'
输出:
4.5 范围值检查
BETWEEN操作符匹配范围中的所有值,包含指定的开始值和结束值,两个值之间必须用AND关键字分隔。
例如:列出所有价格在5到10美元之间的所有产品,输入
SELECT prod_name , prod_price FROM Products WHERE prod_price BETWEEN 5 AND 10
输出:
4.6 空值检查
在创建表时,可以指定其中的列能否不包含值,在一个列不包含值时,称其为空值NULL。
提示:NULL
无值(no value),它与字段包含0,空字符串或仅仅包含空格不同。
要确定值是否为NULL,不能只简单的用 = NULL。SELECT语句有一个特殊的WHERE子句可以用来检查具有NULL值的列,IS NULL
例如:输入
SELECT prod_name , prod_price FROM Products WHERE prod_price IS NULL
输入:
由于表中没有这样的行,所以没有返回数据。
例如:当表中有NULL值的行时,输入
SELECT cust_name FROM CUSTOMERS WHERE cust_email IS NULL
输入:
小结
这一课介绍了如何用SELECT语句和WHERE子句过滤返回的数据。我们学习了如何检验相等、不相等、大于、小于、值的范围以及NULL值的判断等。