数据库第3章第四次课幻灯片.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * 写出下列查询的SQL语句: 查询所有课程成绩都在75分以上的学生的姓名、学号、和总分,按学号降序排列; 查询秋季有三门(包括三门)以上课程成绩为85分以上的学生姓名; 查询所学每一门课程成绩均高于等于该课程平均成绩的学生的姓名和相应的课程号。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 此查询也可以写成: SELECT TN,SAL FROM T WHERE SAL (SELECT MIN(SAL ) FROM T WHERE DEPT=计算机) AND DEPT!= ‘计算机’ 先执行子查询,利用库函数MIN找到计算机系中所有教师的最低工资——900; 再执行父查询,查询所有不是计算机系且工资高于900的教师。 * 2. 使用IN 可以使用IN代替“=ANY”。 例3.55(题目同3.53) SELECT TN FROM T WHERE TNO IN (SELECT TNO FROM TC WHERE CNO=C5) * 3. 使用ALL ALL的含义为全部。 例3.56 查询其他系中比计算机系所有教师工资都高的教师的姓名和工资。 SELECT TN,SAL FROM T WHERE SALALL (SELECT SAL FROM T WHERE DEPT=计算机) AND DEPT!= ‘计算机’ * 子查询找到计算机系中所有教师的工资集合(1500,900); 父查询找到所有不是计算机系且工资高于1500的教师姓名和工资。 * 此查询也可以写成: SELECT TN,SAL FROM T WHERE SAL (SELECT MAX(SAL ) FROM T WHERE DEPT=计算机) AND DEPT!= ‘计算机’ 库函数MAX的作用是找到计算机系中所有教师的最高工资1500。 * 练习6: (T、TC表)查询不讲授课程号为C5的教师姓名(TN)。 SELECT DISTINCT TN FROM T WHERE C5 !=ALL (SELECT CNO FROM TC WHERE TNO=T.TNO) * !=ALL的含义为不等于子查询结果中的任何一个值,也可使用NOT IN代替!=ALL。 子查询包含普通子查询和相关子查询。 前面所讲的子查询均为普通子查询,而本例中子查询的查询条件引用了父查询表中的属性值(T表的TNO值),我们把这类查询称为相关子查询。 * 二者的执行方式不同: 普通子查询的执行顺序是: 首先执行子查询,然后把子查询的结果作为父查询的查询条件的值。 普通子查询只执行一次,而父查询所涉及的所有记录行都与其查询结果进行比较以确定查询结果集合。 * 相关子查询的执行顺序是: 首先选取父查询表中的第一行记录,内部的子查询利用此行中相关的属性值进行查询, 然后父查询根据子查询返回的结果判断此行是否满足查询条件。如果满足条件,则把该行放入父查询的查询结果集合中。重复执行这一过程,直到处理完父查询表中的每一行数据。 * 由此可以看出,相关子查询的执行次数是由父查询表的行数决定的。 如上例表T中每的一行即每个教师记录都要执行一次子查询以确定该教师是否讲授C5这门课,当 C5不是教师的任一门课时,则该教师被选取。 * 4. 使用EXISTS EXISTS表示存在量词,带有EXISTS的子查询不返回任何实际数据,它只得到逻辑值“真”或“假”。 当子查询的的查询结果集合为非空时,外层的WHERE子句返回真值,否则返回假值。 NOT EXISTS与此相反,表示全称量词。 含有IN的查询通常可用EXISTS表示,但反过来不一定。 * 例3.58(题目同3.53)略 SELECT TN FROM T WHERE EXISTS (SELECT * FROM TC WHERE TNO=T.TNO AND CNO=C5) 当子查询TC表存在一行记录满足其WHERE子句中的条件时,则父查询便得到一个TN值,重复执行以上过程,直到得出最后结果。 * 练习8: 查询选修所有课程的学生姓名 SELECT snam

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档