SQL Server数据库基础教程 刘丽 第4章新.pptVIP

SQL Server数据库基础教程 刘丽 第4章新.ppt

  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文档。上传文档
查看更多
6.完整外部联接查询 在完整外部联接中,将返回两个表的所有行。其中:左表中不满足条件的记录在拼接时,右表中的相应列中填充NULL值;右表中不满足条件的记录在拼接时,左表中的相应列中填充NULL值。 【例4-32】将“课程”表与“教师”表进行完整外部联接,查看教学任务安排情况。 SELECT Kch,Kcm,Js.Jsh,Xm FROM Kc FULL JOIN Js ON Kc.Jsh=Js.Jsh 7.联接三个或更多的表 在FROM子句中允许使用多个ON实现联接三个或更多的表。 【例4-33】将“课程”表与“教师”表进行完整外部联接,查看教学任务安排情况。 SELECT Xs.Xh,Xm,Kc.Kch,Kcm,Cj FROM Xs JOIN Cj ON Xs.Xh=Cj.Xh JOIN Kc ON Cj.Kch=Kc.Kch 4.5嵌套查询: 和程序语言类似,SQL语句中允许查询的嵌套。通常把一个SELECT-FROM-WHERE语句组称为一个查询块。将一个查询块嵌套在另一个查询块中的查询叫嵌套查询。 例如, SELECT Xh,Xm,Xb FROM Xs WHERE Zyh= ( SELECT Zyh FROM Zy WHERE Zym=自动化 ) 内层的查询块叫子查询,也称为内部查询或内部选择,包含子查询的查询块叫父查询,也称为外部查询或外部选择。 1.使用IN(NOT IN) 的子查询 通过IN引入的子查询结果是包含零个值或多个值的列表。子查询返回结果之后,外部查询将利用这些结果。在IN前加NOT后,功能与IN相反。 【例4-34】使用“学生”表、“课程”表和“成绩”表查询修了课程名为“英语口语”的学生的学号和姓名。 SELECT Xh,Xm FROM Xs WHERE Xh IN ( SELECT Xh FROM Cj WHERE Kch IN ( SELECT Kch FROM Kc WHERE Kcm = 英语口语 ) ) 2.使用比较运算符的子查询 子查询可以由一个比较运算符(=、 、、 =、、!、! 或 =)引入。 与使用 IN 引入的子查询一样,由未修改的比较运算符(即后面不接 ANY 或 ALL 的比较运算符)引入的子查询必须返回单个值而不是值列表。 【例4-35】查询自动化专业学生的学号、姓名、性别。 SELECT Xh,Xm,Xb FROM Xs WHERE Zyh = ( SELECT Zyh FROM Zy WHERE Zym = 自动化 ) 3.用ANY或ALL修改的比较运算符 可以用ALL或ANY关键字修改引入子查询的比较运算符。通过修改的比较运算符引入的子查询返回零个值或多个值的列表。 下面以“”比较运算符为例来说明ALL和ANY区别。 “ALL”:表示大于每一个值,即大于最大值。例如,ALL (1, 2, 3)表示大于3。 “ANY”:表示至少大于一个值,即大于最小值。例如,ANY (1, 2, 3) 表示大于1。 【例4-36】查询“学生”表中比“生物医学工程”专业所有学生年龄都大的“自动化”专业学生名单。 SELECT * FROM Xs WHERE Zyh = ( SELECT Zyh FROM Zy WHERE Zym=自动化 ) AND Csrq ALL ( SELECT Csrq FROM Xs WHERE Zyh= ( SELECT Zyh FROM Zy WHERE Zym=生物医学工程 ) ) 4.使用 EXISTS (NOT EXISTS)的子查询 在前面所介绍的子查询中,都是通过执行一次子查询并将得到的值代入外部查询的 WHERE子句中进行计算,这样的子查询称为不相关子查询。 与此相对的就是相关子查询。在包括相关子查(也称为重复子查询)询的查询中,子查询无法独立与外部查询进行计算,它依靠外部查询获得值。这意味着子查询是重复执行的,为外部查询可能选择的每一行均执行一次。 【例4-37】使用带有比较运算符的相关子查询实现查找成绩比该科平均成绩低的同学的成绩。 SELECT * FROM Cj AS C1 WHERE Cj ( SELECT avg(C2.Cj) FROM Cj AS C2 WHERE C1.Kch = C2.Kch ) 【例4-38】使用EXISTS运算符查询“教师”表中与“毛志远”同一部门的教师信息。 SELECT * FROM Js AS J1 WHERE EXISTS ( SELE

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档