- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4. 联接操作 联接条件可在WHERE中指定,也可以在 FROM子句中指定。 ?把课程名为”数据库原理”的成绩从表SC中删除. DELETE FROM SC WHERE CNO IN (SELECT CNO FROM C WHERE CNAME=数据库原理); ?把课程名为”数据库原理”的成绩提高10%. UPDATE SC SET GRADE=1.1*GRADE WHERE CNO IN (SELECT CNO FROM C WHERE CNAME=数据库原理); ③ 引入游标机制: 将集合操作转换为单元组处理。 SQL的执行是面向集合的,一条SQL语句原则上可以产 生或处理多条记录。 宿主语言是面向记录的,一组主变量一次只能存放 一条记录。 为此引入游标来协调SQL语言与主语言的 不同数据处理方式。 二、与游标有关的语句: ① 定义游标语句( DECLARE ) 游标是与某一查询结果相联系的符号名。 EXEC SQL DECLARE 游标名 CURSOR FOR SELECT语句 [FOR UPDATE [OF 字段名1 ,…,字段名n]]; END_EXEC 这是一个说明语句,定义中的SELECT语句并不立即执行。 EXEC SQL DECLARE scx CURSOR FOR SELECT SNO,CNO,GRADE FROM SC WHERE SNO=(SELECT SNO FROM S WHERE SNAME=:givensname) FOR UPDATE OF GRADE; 第二种情况:SELECT语句中未使用分组子句,但在SELECT子句中使用了聚合操作,此时SELECT子句的语义是对查询结果执行聚合操作。如: SELECT COUNT(*) count_男,AVG(AGE) avg_age FROM S WHERE SEX=男; 该语句是求男同学的人数和平均年龄。 第三种情况:SELECT语句使用了分组子句和聚合操作,此时SELECT子句的语义是对查询结果的每一分组去做聚合操作。如: SELECT AGE,COUNT(*) count FROM S WHERE SEX=男 GROUP BY AGE; 该语句是求男同学每一年龄的人数。 注意: ? 通常SELECT语句中使用了分组子句就会有聚合操作。 但执行聚合操作不一定要用分组子句。 如:求男同学的人数,此时聚合值只有一个,因此不必分组。 ? 但同一个聚合操作的值有多个时,必须使用分组子句。 如:求每一年龄的学生人数。此时聚合值有多个, 与年龄有关,因此必须分组。 在 FROM 子句中指定联接条件时,SQL2将 联接操作符分成: 联接类型、联接条件。 联接类型:决定了如何处理联接条件中不匹配的元组。 联接条件:决定了两个关系中哪些元组应该匹配。 联接类型中的OUTER字样可不写。 交叉联接: CROSS JOIN 完全外联接: FULL OUTER JOIN 右外联接: RIGHT OUTER JOIN 左外联接: LEFT OUTER JOIN 内联接: INNER JOIN 联接类型说明 联接类型 结果为两个联接表中匹配行的联接。 结果包括“左”表(出现在 JOIN 子 句的最左边)中的所有行。不包括右表中的 不匹配行。 结果包括“右”表(出现在JOIN 子句的最右边)中的所有行。不包括左表中的不匹配行。 结果包括所有联接表中的所有行,不论它们是否匹配 结果包括两个联接表中所有可能的行组合。交叉联接返回的是两个表的笛卡儿积 具体列出两个关系在哪些相应属性上做联接条件比较。联接条件应写在联接类型的右边。 ON 联接条件 联接条件说明 联接条件 举例:检索选修了C1和C3的课程的学生的学号。 SELECT DISTINCT X.SNO FROM SC X INNER JOIN SC Y ON X.SNO = Y.SNO WHERE (X.CNO =‘C1’) AND (Y.CNO =‘C3’); §4 SQL的数据更新
文档评论(0)