5.3 使用WHERE子句设置检索条件
SELECT…FROM是一个基本的查询语句,它会无差别地返回所有的值,但这通常不是我们想要的,我们希望检索出来的数据是满足某个甚至某些条件的,而利用WHERE子句可以达到我们的目的。WHERE子句就像一个筛选器,它对FROM子句返回的结果进行筛选,每条记录都会按照条件进行判断,如果符合条件,则该记录作为查询结果的一部分,如果不符合条件则不会返回。
WHERE条件子句中可以使用的操作符主要有关系操作符、比较操作符和逻辑操作符。
1)关系操作符包括:<、<=、>、>=、=、!=、<>。
2)比较操作符包括:
❑IS NULL:如果操作数为NULL返回TRUE。
❑LIKE:模糊比较字符串值。
❑BETWEEN…AND…:验证值是否在范围之内。
❑IN:验证操作数在设定的一系列值中。
3)逻辑操作符包括:
❑AND:两个条件都必须得到满足。
❑OR:只要满足两个条件中其中的一个。
❑NOT:与某个逻辑值取反。
简单的WHERE条件语句一般只有一个限制条件,但是如果单一的限制条件不能满足我们的业务需求时,开发人员可以使用多个限制条件查询数据,多个限制条件之间可以使用逻辑操作符相连接。这些在下面的小节中会做详细介绍。
5.3.1 查询中使用单一条件限制
这里所说的单一的查询条件主要针对关系操作符来讲,至于比较操作符的应用会在后面介绍。在WHERE条件中也可以使用函数。
【示例15】查询中使用“>”
检索表PRODUCTINFO中产品名称、产品价格、产品数量,列出的记录要求产品数量大于20,并根据产品数量升序排列。脚本如下:
SELECT productname,productprice,quantity FROM productinfo WHERE quantity>20 ORDER BY quantity;
【执行效果】
执行效果见图5.16。
图 5.16 数量大于20的数据
【示例16】查询中使用“<>”
检索表PRODUCTINFO中产品名称、产品价格、产品数量、产品类型编码。列出的记录要求“产品类型编码”不为“0100030002”。脚本如下:
SELECT productname,productprice,quantity,category FROM productinfo WHERE category<>'0100030002';
【执行效果】
执行效果见图5.17。
图 5.17 产品类型编码不为“0100030002”
利用“<>”作为查询条件时,可以使用“!=”替换;category字段是字符串类型,在查询时字符串类型数据需要用单引号括起。
【示例17】查询条件中使用函数
检索表PRODUCTINFO中产品ID、产品名称、产品价格、产品数量、产品类型编码。列出的记录要求“产品ID”的前6位是“024003”。脚本如下:
SELECT productid,productname,productprice,quantity,category FROM productinfo WHERE SUBSTR(productid,1,6)='024003';
【执行效果】
执行效果见图5.18。
图 5.18 利用函数查询数据