文档详情

SQL概述 数据定义 查询 更新 视图 数据控制 嵌入式SQL.ppt

发布:2017-06-09约2.38万字共238页下载文档
文本预览下载声明
数据库原理 例3:在S_G视图中查询平均成绩在90分以上的学生学号和 平均成绩。 SELECT * FROM S_G WHERE Gavg = 90; (系统转换后)? SELECT Sno,AVG(Grade) FROM SC WHERE AVG(Grade) = 90 GROUP BY Sno; SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno; 例3:在S_G视图中查询平均成绩在90分以上的学生学号和 平均成绩。 SELECT * FROM S_G WHERE Gavg = 90; (系统转换后) SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade) = 90 ; 3.5.3 更新视图 更新视图即通过视图插入(INSERT)、删除(DELETE)和修改(UPDATE)数据,实质上转换为对基本表的更新。 为了防止用户对超出视图范围的基本表的数据进行操作,在定义视图时,应加上WITH CHECK OPTION子句,则在视图上更新数据时,DBMS将检查视图定义中的条件,不满足将拒绝执行。 例1:将信息系学生视图IS_Student中学号为95002的学生的姓名改为“刘辰”。 UPDATE IS_Student SET Sname= 刘辰 WHERE Sno = 95002; (系统转换后) UPDATE Student SET Sname= 刘辰 WHERE Sno = 95002 AND Sdept= IS; 例2:向信息系学生视图IS_Student中插入一名新生,学号为95006,姓名为赵新,年龄为20岁的学生。 INSERT INTO IS_Student VALUES (95006, 赵新,20); (系统转换后) INSERT INTO Student(Sno, Sname, Sage, Sdept) VALUES (95006, 赵新,20, IS); 例3:删除信息系学生视图IS_Student中学号为95006的 记录。 DELETE FROM IS_Student WHERE Sno= 95006; (系统转换后) DELETE FROM Student WHERE Sno= 95006 AND Sdept= IS; 一般情况下,行列子集视图是可更新的。 不可更新的视图(各系统不太一致) 由多个表导出的视图,不可更新 视图的列来自表达式或常数,不可插入、修改、可删除 视图列是来自集函数,不可更新 视图定义中含有GROUP BY子句,不可更新 视图定义中含有DISTINCT短语,不可更新 视图定义中内层嵌套的表与导出该视图表相同,不可更新 在不允许更新的视图上定义的视图,不可更新 例: 将SC中成绩在平均成绩之上的元组定义成一个视图 GOOD_SC。 CREATE VIEW GOOD_SC AS SELECT Sno, Cno, Grade FROM SC WHERE Grade (SELECT AVG(Grade) FROM SC); 3.5.4 视图的作用 视图能够简化用户的操作 使数据库看起来结构简单、清晰、可简化用户的数据查询操作 视图使用户能以多种角度看待同一数据 使不同的用户以不同的方式看待同一数据 视图对重构数据库提供了一定程度的逻辑独立性 视图能够对机密数据提供安全保护 对不同的用户定义不同的视图,使机密数据不出现在不应看到这些数据的用户的视图上。 3.6 数据控制 数据控制功能 数据库恢复、并发控制 数据库的安全性控制 数据库的完整性控制 定
显示全部
相似文档