- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chapter等03-chinese
3.7 嵌套子查询 嵌套子查询 出现在父查询的From子句中 出现在父查询的Where子句中 在From子句中——用子查询构造派生关系 在From子句中,允许用子查询构造新的关系,称为派生关系 新关系必须命名。其属性也可以重命名 格式 From … , (SQL 子查询) (as) 关系名… , From … , (SQL子查询) (as) 关系名(属性1, 属性2…) , 在From子句中——用子查询构造派生关系 例 R: 选修关系 问: 每门课程的最高成绩和相应学生姓名? 在From子句中——用子查询构造派生关系 正确理解派生关系的作用 把一个复杂的查询分解成很多步,把上一步的查询结果变成一个派生关系,然后在下一步查询中使用。从而一步步地完成复杂的查询。 在Where子句中 ——用子查询构造条件 条件1: 判定一个值(例如属性值)是否在查询结果中 in运算符 格式 A [not] in (子查询) 要求 A往往是一个值,此时子查询要相当于一个值的集合。即子查询可以有多个元组,但只能有一个属性 元组只有一个属性时,相当于一个单值,子查询的结果是一个这样的元组集合,即多个单值的集合 结果 当A是子查询结果中的一个值时,结果为真。否则为假 在Where子句中 ——用子查询构造条件 例 R: 修选关系 问: 没有选修数学的学生姓名? 在Where子句中 ——用子查询构造条件 条件2: 判定查询结果是否为空 exist运算符 格式 [not] exists (子查询) 结果 exist的含义为存在(至少一条)记录的判定。所以当子查询结果为空(不包含任何记录)时,exists的结果为假,否则为真。 要点 子查询可包含一个或多个属性(exist是对记录的判断,和属性无关) 子查询可引用父查询关系的属性(此时最好标明关系前缀),作为子查询的参数。这一点对于其它类型(in、some、all)的子查询也是适用的 在Where子句中 ——用子查询构造条件 例 R: 选修关系; S: 学生关系 问: 哪个学生没有选修任何课程? 列出姓名和年龄 在Where子句中 ——用子查询构造条件 条件3: 将一个值(例如属性值)与查询结果做比较 some|all运算符 格式 A ?(比较运算, , , =,…) some|all (子查询) 要求 A是一个值,而后面的子查询也要相当于一个值的集合。即子查询可以有多个元组,但只能有一个属性 结果 some表示: A与一个集合(子查询结果)中的多个值比较,有一个比较成功时结果为真;全部都比较失败时,结果为假 all表示: A与子查询中的值比较,全部比较成功时结果为真;有一个比较失败时,结果为假 在Where子句中 ——用子查询构造条件 例 R: 修选关系 问: 物理课哪个学生的成绩最高? 3.11 连接关系 连接关系 连接关系 在From子句中的两个相邻关系之间,可以是一个逗号 —— 表示做笛卡尔积; 也可以是一个连接操作 —— 表示将它们连接成一个新的关系 每个连接操作由一个连接类型和一个连接条件组成 连接条件 natural : 连接两边元组条件为同名属性相等(自然连接) using (属性1, 属性2, …) : 类似自然连接,但是只限于列出的的属性相等 on 条件 : 按照指定的条件连接两边元组 连接关系 连接类型 (inner) join : 内连接。结果不包含失配元组* * 这里失配元组指的是因不满足连接条件,无法和其它元组相连接的元组 left (outer) join : 左外连接。结果包含左边关系的失配元组 right (outer) join : 左外连接。结果包含右边关系的失配元组 full (outer) join : 全外连接。结果包含两边关系的失配元组 cross join : 等价于连接条件为True的内连接,或笛卡儿积 union join : 等价于连接条件为False的全外连接 连接关系 连接关系的例子 连接关系 连接关系的例子 连接关系 连接关系的例子 连接关系 连接关系的例子 连接关系 连接关系的例子 连接关系 连接关系的例子 连接关系 连接关系的应用 假定 Stu: 学生关系;Class:班级关系 有些学生还未分配到相应班级,有些班级也未包含任何学生 连接关系 问 连接关系 连接关系的应用1 每个学生的姓名和班级 连接关系 连接关系的应用2 每个班级的学生人数? 连接关系 连接关系的应用3 列出学生和班主任之间的全部联系? 3.6 空值 空值的处理 空值判定 A is [not ] null 判断指定A(属性
文档评论(0)