- 1
- 0
- 约1.15万字
- 约 86页
- 2017-06-17 发布于四川
- 举报
第三章SQL语言及T-SQL的应用(2) 3、嵌套查询求解方法 不相关子查询:是由里向外逐层处理。即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。 相关子查询:首先取外层查询中表的第一个元组,根据它与内层查询相关的属性值处理内层查询,若父层WHERE子句返回值为真,则取此元组放入结果表; 然后再取外层表的下一个元组; 重复这一过程,直至外层表全部检查完为止。 4、引出子查询的谓词 ※带有IN谓词的子查询 ※带有比较运算符的子查询 ※带有ANY或ALL谓词的子查询 ※带有EXISTS谓词的子查询 一、带有IN谓词的子查询 [例8] 查询与“刘晨”在同一个系学习的学生。 此查询要求可以分步来完成 ① 确定“刘晨”所在系名 SELECT Sdept FROM Student WHERE Sname= 刘晨 ; 结果为: IS Sdept ② 查找所有在IS系学习的学生的学号、姓名、系。 SELECT Sno,Sname,Sdept FROM Student WHERE Sdept= IS; 结果为: Sno Sname Sdept 95001 刘晨 IS 95004 张立 IS ※将第一步查询嵌入到第二步查询的条件中 SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname=刘晨); 注:此查询为不相关子查询。DBMS求解该查询时也是分步去做的。 ※用自身连接完成本查询要求 SELECT S1.Sno,S1.Sname,S1.Sdept FROM Student S1,Student S2 WHERE S1.Sdept = S2.Sdept AND S2.Sname =‘刘晨’; 结果为: [例9]查询选修了课程名为“信息系统”的学生学号和姓名。(用子查询实现) SELECT Sno,Sname ③ 最后在Student关系中 FROM Student 取出Sno和Sname WHERE Sno IN (SELECT Sno ② 然后在SC关系中找出选 FROM SC 修了3号课程的学生学号 WHERE Cno IN (SELECT Cno ① 首先在Course关系中找出“信 FROM Course 息系统”的课程号,结果为3号 WHERE Cname= ‘信息系统’)); 方法二:用连接查询 SELECT Sno,Sname FROM Student,SC,Course WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno AND Course.Cname=‘信息系统’; [例10]假设一个学生只可能在一个系学习,并且必须属于一个系,则在[例8]可以用 = 代替IN : SELECT Sno,Sname,Sdept FROM Student WHERE Sdept = (SELECT Sdept FROM Student WHERE Sname= 刘晨 ); 子查询一定要跟在比较符之后 错误的例子: SELECT Sno,Sname,Sdept FROM Student WHERE ( SELECT Sdept FROM Student
您可能关注的文档
最近下载
- 2025年安徽省公务员行测真题(各地真题).docx VIP
- 八年级语文下册第三单元知识梳理与解析.docx VIP
- 内蒙古呼和浩特市2025-2026学年高一上学期期末考试政治试卷(含答案).pdf VIP
- 湖北省黄石市2025-2026学年高二上学期2月期末语文试卷(含答案).pdf
- 人教版八年级语文下册第一单元知识梳理全套.docx VIP
- (人教版)2025年高一物理寒假衔接讲练 ②寒假预习-第07讲 竖直平面内的圆周运动(教师版).doc VIP
- Simon考官9分大作文范文合集.pdf VIP
- 《眼视光技术》高阶课程-眼压计.pptx VIP
- 八年级语文下册第一单元的知识要点梳理.docx VIP
- Sony索尼耳机WH-1000XM2用户手册.pdf
原创力文档

文档评论(0)