第3章 SQL语言-1.ppt

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

3.5.2 使用比较运算符的子查询 注意: 如果子查询中的结果关系仅包含一个元组,则可将ALL和ANY去掉,直接使用比较运算符 ANY也可以用SOME替代 3.5.2 使用比较运算符的子查询 [例3-57] 查询所选修课程的成绩大于所有“002”号课程成绩的同学学号及相应课程的课程号和成绩。 SELECT studentNo, courseNo, score FROM Score WHERE scoreALL ( SELECT score FROM Score WHERE courseNo=002 ) 3.5.2 使用比较运算符的子查询 [例3-58] 查询年龄小于“计算机科学与技术07-01班”某个同学年龄的所有同学的学号、姓名和年龄。 SELECT studentNo, studentName, year(date())-year(birthday) AS age FROM Student WHERE year(date())-year(birthday)ANY ( SELECT year(date())-year(birthday) FROM Student a, Class b WHERE className=计算机科学与技术07_01班 AND a.classNo=b.classNo ) 本查询执行过程是:首先执行子查询,找出“计算机科学与技术07-01班”同学的年龄集合。然后在Student表中将年龄小于该集合中某个同学年龄的所有同学查找出来。 在比较运算符中,=ANY等价于IN谓词,!=ALL等价于NOT IN谓词 3.6 集合运算 SQL支持集合运算 SELECT语句查询的结果是集合 传统的集合操作主要包括并UNION、交INTERSECT、差EXCEPT运算 在执行集合运算时要求参与运算的查询结果的列数一样,其对应列的数据类型必须一致 3.6 集合运算 [例3-67] 查询“信息管理学院”1990年出生的同学的学号、出生日期、班级名称和所属学院以及“会计学院”1991年出生的同学的学号、出生日期、班级名称和所属学院。 3.6 集合运算 SELECT studentNo, birthday, className, institute FROM Student a, Class b WHERE a.classNo=b.classNo AND year(birthday)=1990 AND institute=信息管理学院 UNION SELECT studentNo, birthday, className, institute FROM Student a, Class b WHERE a.classNo=b.classNo AND year(birthday)=1991 AND institute=会计学院 3.6 集合运算 该查询实际上是查询“信息管理学院”1990年出生的或“会计学院”1991年出生的同学的学号、出生日期、班级名称和所属学院,上述SQL语句可以改写为: SELECT studentNo, birthday, className, institute FROM Student a, Class b WHERE a.classNo=b.classNo AND ( year(birthday)=1990 AND institute=‘信息管理学院 OR year(birthday)=1991 AND institute=会计学院 ) ORDER BY institute 3.6 集合运算 [例3-68] 查询同时选修了“001”号和“005”号课程的同学的学号和姓名 SELECT a.studentNo, studentName FROM Student a, Score b WHERE a.studentNo=b.studentNo AND courseNo=001 INTERSECT SELECT a.studentNo, studentName FROM Student a, Score b WHERE a.studentNo=b.studentNo AND courseNo=005 3.6 集合运算 [例3-68] 查询同时选修了“001”号和“005”号课程的同学的学号和姓名 本例也可用下面的SQL语句实现 SELECT a.studentNo, studentName FROM Student a, Score b WHERE a.

文档评论(0)

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

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

1亿VIP精品文档

相关文档