数据库数据查询分析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 5.5.1 使用比较运算符连接的嵌套查询 使用比较运算符连接SELECT子查询时,子查询只能是单列、单值子查询语句。 【例5-23】查询与“李丽”在同一个班级学习的学生。 此查询要求可以分步来完成: ① 确定“李丽”所在班号 SELECT classno FROM Student WHERE Sname= 张华; 查询结果:1001 ② 查找所有5班的学生。 SELECT Sno,Sname,classno FROM Student WHERE classno= ‘1001; 将第一步查询嵌入到第二步查询的条件中 SELECT Sno,Sname,classno FROM Student WHERE classno= (SELECT classno FROM Student WHERE Sname= 李丽) 【例5-24】使用嵌套查询列出表student中大于学生平均年龄的学生信息。代码如下: SELECT * FROM student WHERE YEAR(GETDATE())-YEAR(birthday) ( SELECT AVG(YEAR(GETDATE())-YEAR(birthday)) FROM student ) GO * 对于单列、单值子查询,可以使用比较运算符与外部查询进行连接。但对单列、多值的子查询,则不能使用比较运算符,只能使用IN或NOT IN进行嵌套连接。 5.5.2 使用IN谓词连接的嵌套查询 【例5-25】查询选修了002号课程的学生姓名 SELECT Sname /*外层查询/父查询*/ FROM Student WHERE Sno IN (SELECT Sno /*内层查询/子查询*/ FROM Student_teacher_course WHERE Cno=002) * 5.5.3 使用EXISTS谓词连接的嵌套查询 EXISTS和NOT EXISTS关键字用来确定数据是否在查询结果集中存在。EXISTS表示子查询至少返回一行时条件成立,NOT EXISTS表示子查询中没有任何记录返回时条件成立。 EXISTS谓词 存在量词? 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。 若内层查询结果非空,则外层的WHERE子句返回真值 若内层查询结果为空,则外层的WHERE子句返回假值 由EXISTS引出的子查询,其目标列表达式通常都用* ,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义 NOT EXISTS谓词 若内层查询结果非空,则外层的WHERE子句返回假值 若内层查询结果为空,则外层的WHERE子句返回真值 【例5-26】查询所有选修了002号课程的学生姓名。 思路分析: 本查询涉及Student和Student_course关系 在Student中依次取每个元组的Sno值,用此值去检查Student_teacher_course关系 若Student_teacher_course中存在这样的元组,其Sno值等于此Student.Sno值,并且其Cno= ‘002’,则取此Student.Sname送入结果关系 SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM Student_teacher_course WHERE Sno=Student.Sno AND Cno=002) * 5.6 使用SSMS进行数据查询 任务:使用SSMS对“高职院校教学管理系统”进行数据查询。 SQL Server 2005中的数据查询 * 使用SSMS进行数据查询 使用SSMS对“高职院校教学管理系统”进行数据查询,操作步骤略。 * * * 【例5-2】从表student中查询出全体学生的详细信息。SELECT * FRO

文档评论(0)

三沙市的姑娘 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档