SQL学习笔记5- 高级数据过滤 (NOT和IN操作)

组合WHERE字句

SQL给多个WHERE字句,允许以AND和OR字句的方式使用,称为操作符。

AND操作符

例:

SELECT prod_name,prod_price
FROM Products
WHERE vent_id='DLL01'AND prod_price<=4;

作用是检索由DLL01制造的且价格小于等于四的名称和价格,AND连接这两个条件,如果是DLL01生产的,但是价格大于4的,不检索。同理,价格小于四,但是不是DLL01生产的也不检索。

AND

用来连接检索所有满足条件的行,如果需要多个过滤条件,可以使用多个AND。

OR操作符

与AND操作符正好相反,指示DBMS检索匹配任一条件的行。事实上,DBMS在OR WHERE字句的第一个条件满足的情况下,就不再计算第二个条件。

SELECT prod_name,prod_price
FROM Products
WHERE vent_id='DLL01'OR vent_id='BRS01';

OR表示检索匹配任一给定条件的行。

求值顺序

如果要求出10美元以上,且由DLL01或BRS01制造的产品,那么会同时用到AND和OR操作,操作顺序会对结果产生影响。例如:

SELECT prod_name,prod_price
FROM Products
WHERE vent_id='DLL01'OR vent_id='BRS01' AND prod_price>=10;

 由于在操作符中,AND的优先级更高,所以会输出由'BRS01'制造的的价格10美元及以上的商品和由DLL01制造的商品。那么就不是我们想要的几个,所以正确的解法是用圆括号对操作符进行分组。

SELECT prod_name,prod_price
FROM Products
WHERE (vent_id='DLL01'OR vent_id='BRS01') AND prod_price>=10;

因为圆括号的优先级比AND和OR更高,所以输出结果是由DLL01或者BRS01生产的价格大于等于10美元的产品,这样才是正确的。 

实际上多使用圆括号没有坏处。

IN操作符

IN操作符用来指定条件范围,氛围中的每个条件都可以进行匹配。

IN取一组由逗号分隔,括在圆括号中的合法值。

例如:

SELECT prod_name,prod_price
FROM Products
WHERE vent_id IN('DLL01','BRS01');

作用是输出由DLL01和BRS01生产的产品。

读者可能会觉得IN操作符和OR操作符效果一样,实际上是这样的

SELECT prod_name,prod_price
FROM Products
WHERE vent_id ='DLL01'OR vent_id='BRS01'
ORDER BY prod_name;

效果是一样的,那么为什么要用IN操作符?IN操作符最大的优点是可以包含其他的SELECT字句,可以更动态的建立WHERE字句,我在第11篇笔记会提到。 

NOT操作符

NOT操作符只有一个功能,就是否定后面的所有条件。NOT从来不单独使用,NOT关键字可以用在要过滤的列前面,而不仅仅是在后面。

SELECT prod_name
FROM Products
WHERE NOT vent_id='DLL01'
ORDER BY prod_name;

输出DLL01之外的所有东西。同理也可以用!=或者<>表示

SELECT prod_name
FROM Products
WHERE  vent_id<>'DLL01'
ORDER BY prod_name;

在更复杂的字句中,NOT的作用比<>更大,这里看不出来。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值