.SQL专题二.pptVIP

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

第5讲 量化比较谓词 expr θ {some | any | all|} (subquery) | (常数集) θ为(,=,=,=,,)等比较符 其中 some和any含义相同。但是大多数数据库产品支持some形式。 例 检索出与住在Dallas或Boston的顾客拥有相同折扣率的所有的顾客编号及其姓名。 (请大家思考!) 实际上 expr in 与 expr =some 或 any 等价 考虑 : expr not in 与 exprsome 或any 等价吗? 例 检索出所有满足以下条件的顾客cid: 该顾客的discnt小于任一住在Duluth的顾客的 discnt 。 select cid from customers where discntany (select discnt from customers where city=‘Duluth’) 对吗?问题在哪? 正确SQL解法为: select cid from customers where discntall (select discnt from customers where city=‘Duluth’) 故,expr not in 不等价于expr some 或any 应,expr not in 等价于expr all EXISTS谓词 表示为:[not] exists (Subquery) exists(subquery) 为真当且仅当子查询返回一个非空的集合。 not exists(subquery) 为真当且仅当子查询返回一个空的集合。 例 检索通过代理商a05订货的顾客的名字。 例 检索出既订购了产品p01又订购了产品p07的顾客的cid 。 (orders where pid=‘p01’)[cid] intersect (orders where pid=‘p07’)[cid] 考虑如何使用基础SQL解决上述问题? 方法二: Select distinct cid from orders O where pid=‘p01’ and exists( select * from orders where cid=O.cid and pid=‘p07’) 回顾 上一节:检索没有通过代理商a05订货的所有顾客的名字。 (在此我们使用exists谓词来完成) 当然我们也可以使用all谓词 例 检索订购了产品p01的顾客所在的city 。 请大家考虑至少用三种以上的方法来实现! 方法四: Select distinct city from customers C,orders O where O.cid=C.cid and O.pid=‘p01’ ; 方法五: select distinct city from customers C where ‘p01’ in (select pid from orders where cid=C.cid) 综上分析:SQL的一大特点就是灵活,但缺点是对一个需求存在过多的等价方法。 SQL的并运算与除运算 前面用select语句模拟了关系运算符“减”、“交”、“选择”、“自然连接”、“乘”等基本运算。 我们这里来讨论如何实现“并”和“除”运算,这样 Select就完成了对整个关系运算集合的模拟。 SQL语句使用union来实现“并”运算 Subquery union[all] Subquery 但是子查询产生的表一定要是兼容的。 (注:当前一些数据库系统允许select使用union, 但不允许在包含子查询的谓词中使用 。) 例 建立一个包含了顾客所在的或者代理商所在或者两者皆在的城市名单。 select city from customers union select city from agents; 可以看到,若一个城市同时满足了上述条件,我们可能希望它在结果表中显示两次,则可以: select city from customers union all select city from agents; 考虑:如果有一个城市在customers和agents、 products中各出现了一次,那么: select city from customers union all (s

文档评论(0)

000 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档