数据库 第五章续 嵌套查询与联合查询(1-2学时+习题讲解,201210).ppt

数据库 第五章续 嵌套查询与联合查询(1-2学时+习题讲解,201210).ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库 第五章续 嵌套查询与联合查询(1-2学时+习题讲解,201210).ppt

【例】将titles表和discounts表的两个查询结果合并到一起。 SELECT name=discounttype,value=discount FROM discounts UNION SELECT title,ytd_sales FROM titles WHERE title LIKE ‘T%’ * 第*页 * 第*页 联合查询时,查询结果的列标题为第一个查询语句中的列标题,因此要定义列标题时必须在第一个查询语句中定义。要对联合查询结果排序时,也必须使用第一查询语句中的列名。 SELECT name=discounttype,value=discount FROM discounts UNION SELECT title,ytd_sales FROM titles WHERE title LIKE ‘T%’ ORDER BY value 2、联合查询结果排序 联合查询也可以对结果进行排序,这时必须把ORDER BY子句与最后一个SELECT语句放在一起使用,而且要对第一个SELECT语句的列名进行排序。 【例】对上例的结果集按照编号的降序排序。 SELECT 编号 FROM books WHERE 出版社=’青山’ UNION SELECT 图书编号 FROM borrowin ORDER BY 1 DESC * 3、 对单张表使用UNION操作符 使用UNION连接的所有SELECT语句也可以使用同一张表,此时UNION运算符可以用OR运算符来代替。 【例】查询蓝天出版社和碧水出版社的图书书名及作者姓名。 SELECT 书名, 作者 FROM books WHERE 出版社=’蓝天’ UNION SELECT 书名, 作者 FROM books WHERE 出版社=’碧水’ * 3、 对单张表使用UNION操作符 用OR运算符来代替UNION,查询语句可以改写为: SELECT 书名, 作者 FROM books WHERE 出版社=’蓝天’ OR出版社=’碧水’ * 4、 交操作和差操作 Transact-SQL不直接支持交操作和差操作,但可以使用EXISTS运算符来实现交操作,使用NOT EXISTS来实现差操作。 【例】查询曾经被借阅的青山出版社的所有图书编号。 SELECT 编号 FROM books WHERE 出版社=’青山’ AND EXISTS ( SELECT * FROM borrowinf WHERE 编号=图书编号) * 【例】查询没有被借阅过的青山出版社的所有图书编号。 SELECT 编号 FROM books WHERE 出版社=’青山’ AND NOT EXISTS ( SELECT * FROM borrowinf WHERE 编号=图书编号) * 5、UNION操作符和JOIN操作符区别与联系 UNION操作符和JOIN操作符都可以将两个或多个数据表连接在一起。但是,UNION操作符通常是连接两个或者多个SELECT查询语句,而JOIN操作符则是在一个SELECT查询语句中将两个或者多个表连接在一起。 在有些情况下,同一个操作任务,可以使用UNION或者JOIN两种不同的查询策略。 * 6、 连接查询和子查询的比较 有些问题使用子查询解决会更简单,有些问题使用连接查询可以变得简单,因此要根据实际情况进行选择。 当需要频繁地计算统计函数的值并将其用在外查询中作比较时,应该使用子查询。随着嵌套层数的增加,查询语句的性能会不断下降。 【例】查询books中价格最低的图书编号和书名。 SELECT 编号,书名 FROM books WHERE 定价=(SELECT min(定价) FROM books) * 当SELECT中的列来自于多于一个表时,则应该使用连接查询。但一般在INSERT,UPDATE和DELETE语句中不支持多表连接,要用子查询代替。 【例】查询读者编号、读者姓名、所借图书书名和借期。 SELECT readers.编号,readers.姓名, books.书名, borrowinf.借期 FROM

文档评论(0)

tangtianbao1 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档