预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PAGEPAGE4高级过滤数据--高级数据过滤关键词:WHERE子句|NOT和IN操作符--组合WHERE子句(给出多个WHERE子句。有两种使用方式:以AND子句或OR子句的方式使用)--AND操作符(相当于给WHERE子句添加了附加条件)SELECTprod_id,prod_price,prod_nameFROMProductsWHEREvend_id='DLL01'ANDprod_pricelt;=4;--因为只有一个AND子句,最多有两个过滤条件,可以增加多个过滤条件,每个条件间都要使用AND关键字--OR操作符(检索匹配任一条件的行,在DBMS中,在第一个条件满足时,不管第二个条件是否满足,相应的行都被检索出来)SELECTprod_name,prod_priceFROMProductsWHEREvend_id='DLL01'ORvend_id='BRS01';--求值顺序(AND和OR两者结合可以进行复杂高级的过滤)(WHERE子句中可以包含任意数目的AND和OR操作符)SELECTprod_name,prod_priceFROMProductsWHEREvend_id='DLL01'ORvend_id='BRS01'ANDprod_price=10;我们会发现输出的结果并非达到我们的预期,原因就是SQL在处理OR操作符的时候,优先处理AND操作符,导致操作符被错误的组合成价格在10美元以上的BRS01以及任意价格的DLL01,导致输出错误的结果。解决方法是使用圆括号对操作符进行明确分组。SELECTprod_name,prod_priceFROMProductsWHERE(vend_id='DLL01'ORvend_id='BRS01')ANDprod_price=10;--IN操作符(用来指定条件范围,范围中的每个条件都可以进行匹配)(由一组逗号分隔、括在圆括号中的合法值)SELECTprod_name,prod_priceFROMProductsWHEREvend_idIN('DLL01','BRES01')ORDERBYprod_name;-----------------------SELECTprod_name,prod_priceFROMProductsWHEREvend_id='DLL01'ORvend_id='BRS01'ORDERBYprod_name;在这里发现使用IN操作符和OR操作符输出的结果大致相当(书中两个表结果完全相同,可能是DBMS的不同导致的差异,也可能是表的外部连接的影响)。但是可以发现IN操作符的优点大概如下:1.IN操作符的语法更清楚,更直观。2.IN在与(AND/OR)操作符混合使用的时候,求值顺序更容易管理。3.IN操作符一般比一组OR操作符执行得更快。4.IN操作符最大的优点是可以包含其他SELECT语句,能够更动态地简历WHERE字句。--NOT操作符(特点:从不单独使用;用在过滤的条件前后都可以)(功能:WHERE子句中用来否定其后条件的关键字)SELECTprod_nameFROMProductsWHERENOTvend_id='DLL01'ORDERBYprod_name;等同于SELECTprod_nameFROMProductsWHEREvend_idlt;'DLL01'ORDERBYprod_name;在简单的WHERE子句中NOT优势并不明显,但是在更加复杂的子句中,NOT非常有用。比如和IN操作符联合使用,可以非常简单地找出与条件列表不匹配的行。