- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
项目5_表查询的实现
外连接 外联包括以下三种 ①左外连接(LEFT OUTER JOIN);结果表中除了包括满足连接条件的行外 还包括坐标的所有行。 ②右外连接(RIGHT OUTER JOIN):结果中除了表中包括满足连接条件的行外还包括游标的所有行 ③完全外连接(FULL OUTER JOIN):结果表中除了包括满连接条件的行外还包括两个表的所有行 外连接 【例5.31】查找所有学生情况及其选修任何课程若学生为选秀任何课程也要包括其基本情况。 SELECT Students.*,Cno FROM Students LEFT OUTER JOIN SC ON Students.Sno=SC.Sno 【例5.32】查找被选修的课程的情况和所有课程的名字。 SELECT SC.*,Cname FROM SC RIGHT JOIN Courses ON SC.Cno=Courses.Cno 交叉连接 交叉连接实际上是将两个表惊醒笛卡尔积运算,结果表示有第一个表的每行于第二个表的每行凭借后形成的表,因此结果表的行数等于两个表行数之积。 【例5.33】列出学生所有可能的选修情况。 SELECT Sno,Sname,Cno,Cname. FROM Students CROSS JOIN Courses 5.5在OnlineCS数据库中嵌套查询 在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询或子查询。 嵌套查询一般的求解方法是由里向外处理,即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。 使用IN操作符的嵌套查询 【例5.34】查询与“张三”在同一个系学习的学生的学号与姓名。 SELECT Sno,Sname FROM Students WHERE Sdept IN {SELECT Sdept FROM Students WHERE Sname=’李一’ } 【例5.35】查询选修了“数据库原理及应用“的学生的学号和姓名。 SELECT Sno,Sname FROM Students WHERE Sno IN {SELECT Sno FROM SC WHERE Cno IN ( SELECT Cno FROM Courses WHERE Cname=’ 数据库原理及应用’) } 使用比较符的嵌套查询 在【例5.34】中,由于一个学生只能在一个系学习,也就是说内查询的结果是一个值,因此,可以用=代替IN,其SQL语句如下: SELECT Sno,Sname FROM Students WHERE Sdept= {SELECT Sdept FROM Students WHERE Sname=’李一’} 使用ANY或ALL操作符的嵌套查询 格式为:字段 比较符 [ANY|ALL] 子查询 表5-9 ANY、ALL谓词与聚合函数及IN谓词的等价转换关系 = 或!= = = ANY IN MAX =MAX MIN =MIN ALL NOT IN MIN =MIN MAX =MAX 使用ANY或ALL操作符的嵌套查询 【例5.36】查询其他系中比计科系某一学生年龄小{即出生日期大}的学生。 SELECT * FROM Students WHERE Sbirthday ANY (SELECT Sbirthday FROM Students WHERE Sdept=’ 计科系’) AND Sdept ’计科系’ 【例5.37】查询其他系中比计科系学生年龄都小的学生。 SELECT * FROM Students WHERE Sbirthday (SELECT MAX(Sbirthday) FROM Students WHERE Sdept=’ 计科系’) AND Sdept ’计科系’ 使用EXISTS操作符的嵌套查询 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑值或逻辑假值 【例5.38】查询选修了C1课程的学生姓名。 SELECT Sname FROM Students WHERE EXISTS (SELECT * FROM SC WHERE Students.Sno=SC.Sno AND Cno=’C1’ 5. 6 在OnlineCS数据库中组合查询 SELECT语句的查询结果是行的集合,所以多个SELECT语句的结果可进行集合操作。集合操作主要包括并操作UNION、交操作INTERSECT和差操作EXCEPT。T-SQL查询语言的组合操作符只有UNION一种,差和交操作还可以通
原创力文档


文档评论(0)