- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
扩展Select查询语句 Group by 子句 Having子句 Order by 子句 嵌套子查询 连接关系 嵌套子查询 嵌套子查询 出现在父查询的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: 将一个值(例如属性值)与查询结果做比较 some|all运算符 格式 A ?(比较运算, , , =,…) some|all (子查询) 意义 some: A与集合(子查询结果)中的一个值满足比较条件 all: A与集合(子查询结果)中的所有值满足比较条件 要求 A是一个值,而后面的子查询也要相当于一个值的集合。即子查询可以有多个元组,但只能有一个属性 在Where子句中 ——用子查询构造条件 例 R: 修选关系 问: 物理课哪个学生的成绩最高? 在Where子句中 ——用子查询构造条件 条件3: 判定查询结果是否为空 exist运算符 格式 [not] exists (子查询) 意义 子查询结果不为空(至少存在一条记录) 要点 子查询可包含一个或多个属性(exist是对记录数的判断,和属性无关) 子查询可引用父查询关系的属性(此时最好标明关系前缀),作为子查询的参数。这一点对于其它类型(in、some、all)的子查询也是适用的 在Where子句中 ——用子查询构造条件 例 R: 选修关系; S: 学生关系 问: 哪个学生没有选修任何课程? 列出姓名和年龄 连接关系 连接关系 在From子句中的两个相邻关系之间,可以是一个逗号 —— 表示做笛卡尔积,无条件的连接; 也可以是一个连接运算 —— 表示按某个条件进行连接 连接类型 内连接: 格式:A inner join B on 条件 (A, B是关系) 内连接的结果不包含失配元组:因不满足连接条件,无法和其它元组相连接的元组。 连接关系 左外连接 格式: A left [outer] join B on 条件 结果包含左边关系的失配元组 右外连接 格式: A right [outer] join B on 条件 结果包含右边关系的失配元组 全外连接 格式: A full [outer] join B on 条件 结果包含两边关系的失配元组 连接关系 连接关系的例子 连接关系 连接关系的例子 连接关系 连接关系的例子 连接关系 连接关系的例子 连接关系 连接关系的应用 假定 Stu: 学生关系;Class:班级关系 有些学生还未分配到相应班级,有些班级也未包含任何学生 连接关系 问 连接关系 连接关系的应用1 每个学生的姓名和班级 连接关系 连接关系的应用2 每个班级的学生人数? 连接关系 连接关系的应用3 列出学生和班主任之间的全部联系? 空值与处理 空值的意义 空值参与计算 关系代数中的空值 SQL中的空值 空值的意义 元组的某些属性可以取空值Null 空值用于表示两种情况:值未知;或值不存在 空值的计算 空值参与各种运算:被当做一个未知值 空值出现在算术运算中,其结果一定还是null 空值出现在比较运算中,结果一定是unknown(true or false) 空值出现在布尔运算中,被替换为unknown后再计算 OR: (unknown or true) = true (unknown or false)
文档评论(0)