第3章 关系数据库标准语言SQL(续).ppt

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章内容 SQL概述 数据定义 数据查询 数据更新 视图 数据控制 3.3 数据查询 3.3.1 单表查询 3.3.2 连接查询 3.3.3 嵌套查询 3.3.4 集合查询 3.3.2 连接查询 等值与非等值连接查询 自身连接 外连接 复合条件连接 等值与非等值连接查询 按一定条件把多个表连接起来,条件的形式为: [表名1.]列名1比较运算符[表名2.]列名2 比较运算符有:=、、、=、=、!= 如果属性名在参见连接的各表中是唯一的,则可以省略表名前缀。 自然连接:最常用的等值连接。 多表查询——等值连接 例:列出每个学生及其选修课程的情况 学生情况←student 选修课程情况←SC Select student.*,SC.* From student,SC Where student.sno = SC.sno 多表查询——自然连接 例:自然连接Student和SC表。 Select Student.sno,sname,ssex,sage,sdept,cno,grade From Student,SC Where Student.sno=SC.sno; 例:列出选修C01课程的学生的名册 select sno,sname from student, SC where student.sno = SC.sno and cno = ‘C01’; 多表查询——自身连接 例:查询每门课的间接先修课(先修课的先修课)。 把Course表想象成完全相同的两张表,取别名为:FIRST、SECOND。 多表查询——自身连接 例:列出年龄比95001大的学生的学号、姓名 多表查询——外连接 不匹配连接,含有NULL信息的处理 例:列出学生及其选课情况 多表查询——外连接 例:列出学生及其选课情况 所有的学生情况及他们的选课情况(含未选课) 多表查询——复合条件查询 查询选修了数据库课程且成绩在80分以上的学生学号和姓名。 Select student.sno,sname From student,sc,course Where student.sno=sc.sno and course.cno=sc.cno and course.cname like‘%数据库%’ and sc.grade=80; 嵌套查询 查询块 一个Select-From-Where语句。 嵌套查询(SubQuery) 将一个查询块嵌套在另一个查询块的Where子句或Having子句的条件中。 嵌套查询——一个简单例子 找出与95001同岁的学生学号及姓名 95001的年龄? Select sage From student Where sno = ‘95001’ 与上述年龄相等的学生? Select sno,sname From student Where sage = (Select sage From student where sno = ‘95001’) 嵌套查询 带有IN谓词的子查询 带有比较运算符的子查询 带有ANY或ALL谓词的子查询 带有EXISTS谓词的子查询 嵌套查询——带IN的子查询 父查询与子查询之间由IN连接,判断某个属性列值是否在子查询的结果中。 适用于子查询的结果是一个集合。 嵌套查询——带IN的子查询 select sno from SC Where cno IN (Select cno From course Where cname Like ‘%数据库%’) 嵌套查询——带IN的子查询 Select sno,sname From student Where sno IN ( Select sno From SC Where cno IN ( Select cno From course Where cname Like ‘%数据库%’)) 嵌套查询——带IN的子查询 表达查询最自然的方式 可以用多个简单查询来构成复杂查询,以增强SQL的查询能力 将复杂的查询切分成若干块,逐个解决 子查询中不能使用 Order By 子句,Order By子句只能对最终查询结果进行排序 嵌套查询——带比较的子查询 子查询与主查询之间由比较运算符相连接 子查询返回单值 直接使用比较运算符 、、=、=、=、!=等 子查询返回多值 比较运算符与ANY/ALL连用 嵌套查询——带比较的子查询 找出年龄比学生95001大的所有学生的学号

文档评论(0)

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

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

1亿VIP精品文档

相关文档