软件技术基础数据库技术

上传人:宝路 文档编号:48349223 上传时间:2018-07-14 格式:PPT 页数:82 大小:526.87KB
返回 下载 相关 举报
软件技术基础数据库技术_第1页
第1页 / 共82页
软件技术基础数据库技术_第2页
第2页 / 共82页
软件技术基础数据库技术_第3页
第3页 / 共82页
软件技术基础数据库技术_第4页
第4页 / 共82页
软件技术基础数据库技术_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《软件技术基础数据库技术》由会员分享,可在线阅读,更多相关《软件技术基础数据库技术(82页珍藏版)》请在金锄头文库上搜索。

1、Spring, 2010. zhaoHaixia. 1第三章 关系数据库语言SQL(续)n 概述n SQL的数据定义n SQL的数据操纵n SQL的视图定义n SQL的数据控制n 嵌入式SQLSpring, 2010. zhaoHaixia. 2联接查询(1 of 8)n联接查询:涉及至少两个表的查询。SQL中没有专门的JOIN命令,而是通过SELECT语句中的WHERE子句来达到联接运算的目的,因此更加灵活、简便。Spring, 2010. zhaoHaixia. 3联接查询(2 of 8)n联接条件的一般格式为: 表名1.列名1比较运算符表名2.列名2其中:比较运算符主要有:=、=、,=,

2、)n与ANY或ALL谓词配合使用Spring, 2010. zhaoHaixia. 19带有比较运算符的子查询(2 of 2)又看例1:查询与A在同一个系学习的学生SELECT * FROM Student WHERE Sdept IN (SELECT SdeptFROM StudentWHERE Sname=A);SELECT * FROM StudentWHERE Sdept = (SELECT SdeptFROM StudentWHERE Sname=A);SELECT * FROM Student WHERE ( SELECT SdeptFROM StudentWHERE Sname=

3、A)= Sdept;子查询应跟在比较符之后Spring, 2010. zhaoHaixia. 20带有ANY或ALL谓词的子查询 (1 of 5)谓词语义FANY:某一个值FALL:所有值n使用ANY 或ALL谓词时必须同时使用比 较运算符ANYALL=Spring, 2010. zhaoHaixia. 21带有ANY或ALL谓词的子查询 (2 of 5)例1: 查询其他系中比IS系某一学生年龄小的学生姓名 和年龄 SELECT Sname, Sage FROM Student WHERE Sage IS;其他方法?Spring, 2010. zhaoHaixia. 22带有ANY或ALL谓词

4、的子查询 (3 of 5)例1: 查询其他系中比IS系某一学生年龄 小的学生姓名和年龄 用集函数: SELECT Sname,Sage FROM Student WHERE Sage IS;效率更高Spring, 2010. zhaoHaixia. 23带有ANY或ALL谓词的子查询 (4 of 5)例2:查询其他系中比IS系所有学生年龄都小的学生姓 名和年龄SELECT Sname, Sage FROM Student WHERE Sage IS;SELECT Sname, Sage FROM Student WHERE Sage IS;Spring, 2010. zhaoHaixia. 2

5、4带有ANY或ALL谓词的子查询 (5 of 5)= =ANY IN - MIN= MINALL-NOT INMAX= MAXANY,ALL与集函数及IN谓词的对应关系Spring, 2010. zhaoHaixia. 25带有EXISTS谓词的子查询(1 of 15)EXISTS谓词与NOT EXISTS谓词不同形式的查询间的替换用EXISTS/NOT EXISTS实现全称量词用EXISTS/NOT EXISTS实现逻辑蕴函Spring, 2010. zhaoHaixia. 26带有EXISTS谓词的子查询(2 of 15)EXISTS谓词F存在量词 F带有EXISTS谓词的子查询不返回任何

6、数据,只产 生逻辑真值“true”或逻辑假值“false” 若内层查询结果非空,则返回真值 若内层查询结果为空,则返回假值Spring, 2010. zhaoHaixia. 27带有EXISTS谓词的子查询(3 of 15)例1:查询所有选修了1号课程的学生姓名SELECT Sname FROM Student WHERE EXISTS(SELECT *FROM SCWHERE Sno = Student.Sno AND Cno=1);若内层查询结果非空,则为真 否则为假相当于一个变量,根据它的值处理内层查询 Student中有多少个学号,内层查询就进行多少次属于相关子查询:查询条件依赖于外层

7、查询中某个值Spring, 2010. zhaoHaixia. 28带有EXISTS谓词的子查询(4 of 15)例1:查询所有选修了1号课程的学生姓名SELECT Sname FROM Student WHERE EXISTS(SELECT *FROM SCWHERE Sno = Student.Sno AND Cno=1);由EXISTS引出的子查询,其目标列表达式通常都用* ,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义其他方法?用联结、相关、不相关子查询实现Spring, 2010. zhaoHaixia. 29带有EXISTS谓词的子查询(5 of 15)例2:查询

8、没有选修1号课程的学生姓名SELECT Sname FROM Student WHERE NOT EXISTS(SELECT *FROM SCWHERE Sno = Student.Sno AND Cno=1);若内层查询结果空,则为真 否则为假此例用连接运算难于实现SELECT Sname FROM Student, SC WHERE Student.Sno =SC.Sno ANDCno=90GROUP BY Sno;SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)=90;Spring, 2010. zhaoHaixia

9、. 79更新视图(1 of 3)n更新操作包括 INSERT,DELETE,UPDATEn执行方式: 将对视图的更新语句转化为对相应的基本表的 更新语句,然后执行。n注意:不是所有的对视图的更新语句都可转化 为正确的更新语句。例如:UPDATE S_GSET GAVG=BWHERE Sno=S1;不能有意义地转化Spring, 2010. zhaoHaixia. 80INSERTINTO Student(Sno,Sname, Sdept,Sage)VALUES (S12, YanXi, IS, 19)例1: INSERTINTO IS_SVALUES (S12, YanXi, 19)视图中的子

10、查询SELECT Sno, Sname, SageFROM StudentWHERE Sdept=IS更新视图更新视图(2 of 3)(2 of 3)1、执行方式Spring, 2010. zhaoHaixia. 81更新视图(3 of 3)2、注意事项 有些视图是可更新的, 有些视图是不可 更新的。但现在还无判别方法。肯定可以更新的视图是 行列子集视图,且 各个系统对视图的更新还有进一步的规 定。 例如,DB2中规定了七条视图更新的原则:书 P127128Spring, 2010. zhaoHaixia. 82视图的作用视图的作用n视图能够简化用户的操作n视图使用户能以多种角度看待同一数据n视图对重构数据库提供了一定程度的逻 辑独立性n视图能够对机密数据提供安全保护

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号