我们在使用数据库提取数据的时候一般都不会整行都需要,往往是提取符合条件的子集数据。因此有必要增加一个搜索条件来精确查找我们需要的数据。WHERE将会帮助我们搜索数据.
#我们先来看一下由产品名称和价格组成的数据
SELECT prod_name, prod_price
FROM products
如果我现在想要买名为Fuses的产品,我想快速知道它的价格,我们可以
SELECT prod_name, prod_price
FROM products
WHERE prod_name = 'Fuses';
如果我想购买的价位在10~35之间的,哪些商品符合我的条件呢?
SELECT prod_name, prod_price
FROM products
WHERE prod_price BETWEEN 10 AND 35;
格式:BETWEEN 开始值 AND 结束值;
开始值和结束值都包含在内,是闭区间!
当然,还有一个特别的要求,比如说我作为老板,想看看哪个产品的价格忘了填写,即NULL值,这是我们可以这样写
SELECT prod_name, prod_price
FROM products
WHERE prod_price IS NULL;
由于所给的表中的价格都填好了,因此就不给出图片了。
可以使用的操作符有:
操作符 | 说明 |
---|---|
= | 等于 |
!= | 不等于 |
> | 大于 |
.>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
BETWEEN | 范围取值 |
注:上面>=的点要去掉,此处加点是因为博客MARKDOWN编辑的问题
使用AND,OR,IN,NOT来进行多条件过滤
上面我们用WHERE都是过滤单个条件,如果我们的条件有多个的话就用AND,OR,IN,NOT来过滤
AND
我们先看下由供应商,产品名,产品价格组成的表
现在我只想看供应商为1003的产品,并且价格不要超过30
SELECT vend_id, prod_name, prod_price
FROM products
WHERE vend_id = 1003 AND prod_price <=30;
OR 和 IN
如果我想要看供应商为1002和1003的产品
SELECT vend_id, prod_name, prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1003;
或者
SELECT vend_id, prod_name, prod_price
FROM prodcuts
WHERE vend_id IN (1002, 1003);
NOT
如果我不想看供应商是1002和1003的产品
SELECT vend_id, prod_name, prod_price
FROM products
WHERE vend_id NOT IN (1002, 1003);
注意:vend_id = 1002 OR vend_id = 1003 AND prod_price<=30;
以上语句意为:想要供应商为1003的且价格不超过30的产品,或者供应商为1002的所有产品。
操作符之间也是有次序的,AND 比 OR高。不过不用记,只要加括号就可以了,要养成加括号的习惯。