[计算机软件及应用]SQL-3-2 SQL学习PPT.ppt

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

第三章SQL语言及T-SQL的应用 (2) 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 WHERE Sname= ‘ 刘晨 ’ ) = Sdept; 二、带有比较运算符的子查询 当能确切知道内层查询返回单值时,可用比较运算符(,,=,=,=,!=或 )。 与ANY或ALL谓词配合使用。 ANY表示子查询结果中的某个值, 而ALL表示子查询结果中的所有值。 带有ANY或ALL谓词的比

文档评论(0)

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

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

1亿VIP精品文档

相关文档