《SQL必知必会》第五课 高级数据过滤 使用AND、OR、IN、NOT关键字组合WHERE子句

第五课 高级数据过滤

使用AND、OR、IN、NOT关键字组合WHERE子句

#使用AND和OR操作符组合WHERE子句
#SQL允许给出多个WHERE子句,这些子句有俩种使用方式:AND子句和OR子句
#AND用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行
#ORDER BY子句应该放在WHERE子句之后
#**OR关键字**WHERE子句中使用的关键字,用来检索匹配任一给定条件的行
#任何时候使用具有AND和OR操作符的WHERE子句都应该使用圆括号明确分组操作符
#IN操作符:在WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当
#NOT关键字:WHERE子句用来否定其后条件的关键字
#大多数DBMS允许使用NOT否定任何条件

操作符:用来联结或改变WHRER子句中的子句的关键字,也称为逻辑操作符

#通过不止一个条件(列)进行过滤,可以使用AND操作符给WHRER子句添加附加条件

所有代码示例products表:在这里插入图片描述
【1】SELECT prod_id,prod_price,prod_name FROM products WHERE vend_id = 'DLL01' AND prod_price<=4;
#AND用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行
#检索由供应商’DLL01’制造并且价格小于等于4美元的所有产品的prod_id,prod_price,prod_name
#AND指示DBMS只返回满足所有给定条件的行
在这里插入图片描述
【2】SELECT prod_price,prod_name FROM products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';

#检索由任一指定供应商 vend_id = ‘DLL01’ OR vend_id = 'BRS01制造的所有产品的prod_price,prod_name
#OR操作符告诉DBMS匹配任一条件而不是同时匹配俩个条件
#OR关键字WHERE子句中使用的关键字,用来检索匹配任意给定条件的行
#OR操作符指定DBMS检索匹配任一条件的行
#许多DBMS在OR WHERE子句的第一个条件得到满足的情况下,就不再计算第二个条件
在这里插入图片描述
【3】
SELECT prod_name,prod_price FROM products WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' AND prod_price>10;

#检索供应商 vend_id = 'BRS01’制造的价格 prod_price>10的所有产品,以及 vend_id = ‘DLL01’ 制造的所有产品
#WHERE子句可以包含任意数目的AND个和OR操作符
#求值顺序:SQL在处理OR操作符前优先处理AND操作符,AND再求值过程中优先级更高

在这里插入图片描述
【4】SELECT prod_name,prod_price FROM products WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01') AND prod_price>10;
#使用圆括号对操作符进行明确分组
#圆括号具有比AND或OR操作符更高的求值顺序
#DBMS首先过滤圆括号内的OR条件
#检索由供应商vend_id = 'DLL01’或 vend_id = 'BRS01’制造的并且价格 prod_price>10的所有产品
#任何时候使用具有AND和OR操作符的WHERE子句都应该使用圆括号明确分组操作符
在这里插入图片描述
【5】SELECT prod_name,prod_price FROM products WHERE vend_id IN('DLL01','BRS01') ORDER BY prod_name;
#IN操作符用来指定条件范围,范围中每个条件都可以进行匹配
#IN取一组由逗号分隔、括在圆括号中的合法值
#检索由制造商 vend_id ='DLL01’和’BRS01’制造的所有商品
#IN操作符后跟由逗号分隔的合法值,这些值必须括在圆括号中
#IN操作符完成与OR相同的功能
在这里插入图片描述
【6】SELECT prod_name,prod_price FROM products WHERE vend_id ='DLL01' OR vend_id ='BRS01' ORDER BY prod_name;
在这里插入图片描述
#使用IN操作符的原因:
(1)语法简单清楚,更直观
(2)求值顺序更易管理
(3)比OR操作符执行更快
(4)可以包含其他SELECT语句,能够更动态地建立WHERE子句

【7】SELECT prod_name FROM products WHERE NOT vend_id ='DLL01' ORDER BY prod_name;
#检索除vend_id =‘DLL01’ 之外的所有供应商制造的产品
#NOT关键字:WHERE子句用来否定其后条件的关键字
#WHERE子句中的NOT操作符有且只有一个功能,即否定其后所跟的任何条件
#NOT从不单独使用,总是与其他操作符一起使用
#NOT关键字可以用在要过滤的列前,而不是在其后。
#DBMS匹配非’DLL01’ 之外的所有东西

在这里插入图片描述
【8】SELECT prod_name FROM products WHERE vend_id <> 'DLL01' ORDER BY prod_name;
#上例也可以用<>操作符来完成
#在与IN操作符联合使用时,NOT可以非常简单的找出与条件列表不匹配的行
#大多数DBMS允许使用NOT否定任何条件
在这里插入图片描述
需要完整代码或书籍PDF版的小伙伴可关注微信公众号:菜田里守望者
在这里插入图片描述
打开微信扫一扫关注吧,你们的支持就是我的动力

参考文献:
【1】《SQL必知必会》第四版 人民邮电出版社 [美] Ben Forta 著 钟鸣 刘晓霞 译

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值