高级过滤数据.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE

PAGE1

高级过滤数据

--高级数据过滤关键词:WHERE子句|NOT和IN操作符

--组合WHERE子句(给出多个WHERE子句。有两种使用方式:以AND子句或OR子句的方式使用)

--AND操作符(相当于给WHERE子句添加了附加条件)

SELECTprod_id,prod_price,prod_name

FROMProducts

WHEREvend_id=DLL01ANDprod_pricelt;=4;

--因为只有一个AND子句,最多有两个过滤条件,可以增加多个过滤条件,每个条件间都要使用AND关键字

--OR操作符(检索匹配任一条件的行,在DBMS中,在第一个条件满足时,不管第二个条件是否满足,相应的行都被检索出来)

SELECTprod_name,prod_price

FROMProducts

WHEREvend_id=DLL01ORvend_id=BRS01;

--求值顺序(AND和OR两者结合可以进行复杂高级的过滤)(WHERE子句中可以包含任意数目的AND和OR操作符)

SELECTprod_name,prod_price

FROMProducts

WHEREvend_id=DLL01ORvend_id=BRS01

ANDprod_price=10;

我们会发现输出的结果并非达到我们的预期,原因就是SQL在处理OR操作符的时候,优先处理AND操作符,导致操作符被错误的组合成价格在10美元以上的BRS01以及任意价格的DLL01,导致输出错误的结果。

解决方法是使用圆括号对操作符进行明确分组。

SELECTprod_name,prod_price

FROMProducts

WHERE(vend_id=DLL01ORvend_id=BRS01)

ANDprod_price=10;

--IN操作符(用来指定条件范围,范围中的每个条件都可以进行匹配)(由一组逗号分隔、括在圆括号中的合法值)

SELECTprod_name,prod_price

FROMProducts

WHEREvend_idIN(DLL01,BRES01)

ORDERBYprod_name;

SELECTprod_name,prod_price

FROMProducts

WHEREvend_id=DLL01ORvend_id=BRS01

ORDERBYprod_name;

在这里发现使用IN操作符和OR操作符输出的结果大致相当(书中两个表结果完全相同,可能是DBMS的不同导致的差异,也可能是表的外部连接的影响)。但是可以发现IN操作符的优点大概如下:

1.IN操作符的语法更清楚,更直观。

2.IN在与(AND/OR)操作符混合使用的时候,求值顺序更容易管理。

3.IN操作符一般比一组OR操作符执行得更快。

4.IN操作符最大的优点是可以包含其他SELECT语句,能够更动态地简历WHERE字句。

--NOT操作符(特点:从不单独使用;用在过滤的条件前后都可以)(功能:WHERE子句中用来否定其后条件的关键字)

SELECTprod_name

FROMProducts

WHERENOTvend_id=DLL01

ORDERBYprod_name;

等同于

SELECTprod_name

FROMProducts

WHEREvend_idlt;DLL01

ORDERBYprod_name;

在简单的WHERE子句中NOT优势并不明显,但是在更加复杂的子句中,NOT非常有用。比如和IN操作符联合使用,可以非常简单地找出与条件列表不匹配的行。

文档评论(0)

180****2462 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档