网站租用服务器,国内新闻,微信如何自己开发小程序,建筑企业公司目录 视图概述视图的概念视图的作用 实验目的实验内容实验要求实验过程 视图概述
视图是由数据库中的一个表或多个表导出的虚拟表#xff0c;其作用是方便用户对数据的操作
视图的概念
视图是一个虚拟表#xff0c;其内容由查询定义。同真实的表一样#xff0c;视图包含一… 目录 视图概述视图的概念视图的作用 实验目的实验内容实验要求实验过程 视图概述
视图是由数据库中的一个表或多个表导出的虚拟表其作用是方便用户对数据的操作
视图的概念
视图是一个虚拟表其内容由查询定义。同真实的表一样视图包含一系列带有名称的列和行数据。但是数据库中只存放了视图的定义而并没有存放视图中的数据这些数据存放在原来的表中。使用视图查询数据时数据库系统会从原来的表中取出对应的数据。因此视图中的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变显示在视图中的数据也会发生改变。同样对视图的更新会影响到原来表的数据
视图是存储在数据库中的查询的SQL语句它主要出于两种原因安全原因视图可以隐藏一些数据例如员工信息表可以用视图只显示姓名、工龄、地址而不显示社会保险号和工资数等另一个原因是可使复杂的查询易于理解和使用。这个视图就像一个“窗口”从中只能看到你想看的数据列。这意味着你可以在这个视图上使用SELECT *而你看到的将是你在视图定义里给出的那些数据列
视图的作用
视图是在原有表或者视图的基础上重新定义的虚拟表这可以从原有的表上选取对用户有用的信息忽略次要信息其作用类似于筛选。视图的作用归纳为如下几点
1.使操作简单化 视图需要达到的目的就是所见即所需。视图不仅可以简化用户对数据的理解也可以简化他们的操作。那些被经常使用的查询可以被定义为视图从而使得用户不必为以后的操作每次指定全部的条件
2.增加数据的安全性
通过视图用户只能查询和修改指定的数据。指定数据之外的信息用户根本接触不到。这样可以防止敏感信息被未授权的用户查看增强机密信息的安全性
3.提高表的逻辑独立性
视图可以屏蔽原有表结构变化带来的影响。例如原有表增加列和删除未被引用的列对视图不会造成影响。同样如果修改表中的某些列可以使用修改视图来解决这些列带来的影响
实验目的
(1) 掌握DBMS的数据查询功能 (2) 掌握SQL语言的视图功能
实验内容
(1) 创建表的视图 (2) 利用视图完成表的查询 (3) 删除表的视图
实验要求
(1) 掌握视图的定义 (2) 掌握对视图的操作 (3) 写出实验报告
实验过程 该条款可以给出 一个可更新的视图用于防止插入到select_statement中的子句不为真的行中。它还 防止更新子句为 true 但更新会导致其不为 true 的行在 换句话说它可以防止可见行更新为 不可见的行。WITH CHECK OPTIONWHEREWHERE 会出现无法插入的问题 1创建视图 练习1创建信息系学生的视图。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Ssex,Sage
FROM Student
WHERE SdeptIS
WITH CHECK OPTION;思考其中WITH CHECK OPTION子句的作用是什么
练习2建立信息系选修了1号课程且成绩在88分以上的学生的视图。 解法1
CREATE VIEW IS_S1_88(Sno,Sname,Grade)
AS
SELECT Student.Sno, Sname, Grade
FROM Student,SC
WHERE SdeptIS AND Student.SnoSC.Sno ANDCno1 AND Grade88;
解法2
sql
CREATE VIEW IS_S1_88(Sno,Sname,Grade)
AS
SELECT IS_Student.Sno, Sname, Grade
FROM IS_Student,SC
WHERE IS_Student.SnoSC.Sno ANDCno1 AND Grade88;练习3将学生的学号及平均成绩定义为一个视图。
CREATE VIEW S_G(Sno,Gavg)
AS
SELECT Sno, AVG(Grade)
FROM SC
GROUP BY Sno;2查询视图 练习4在信息系学生的视图中找出年龄小于19的女生。
SELECT Sno,Sname,Ssex,Sage
FROM IS_Student
WHERE Sage19 and Ssex女;思考试写出通过视图消解法转换后的查询语句。 练习5利用IS_S1_88视图查询信息系选修了1号课程且成绩在92分以上的学生的学号、姓名和成绩。
SELECT *
FROM IS_S1_88
WHERE Grade92;思考如何查询信息系选修了1号课程且成绩在85分以上的学生的学号、姓名、性别、年龄和成绩
练习6在S_G视图参见练习3中查询平均成绩在88分以上的学生学号和平均成绩。
SELECT *
FROM S_G
WHERE Gavg88;思考对于此视图查询语句SQL Server2005能否正确完成视图消解试根据实际执行结果的正确与否加以判断并写出视图消解转换后的SQL语句。参考教材p122-123
3更新视图 练习7向信息系学生视图IS_Student中插入一个新的学生元组其中学号为200215185姓名为周捷轮性别为男年龄为23岁。
INSERT
INTO IS_Student
VALUES(200215185,周捷轮,男,23);思考执行此语句会出现什么问题如何修改 试试 ① 首先使用如下语句新建一个信息系学生视图IS_Student2
CREATE VIEW IS_Student2
AS
SELECT Sno,Sname,Ssex,Sage
FROM Student
WHERE isnull(Sdept,IS) IS /*判断Sdept是否为空若为空则用IS代替 */
WITH CHECK OPTION;思考与练习1中建立的IS_Student视图有何区别 ② 然后执行如下SQL语句对视图进行插入操作观察视图和基本表中的结果是否正确
INSERT
INTO IS_Student2
VALUES(200215185,周捷轮,男,23);练习8将信息系学生视图IS_Student中学号为200215132的学生姓名修改为樊虹宇。
UPDATE IS_Student
SET Sname樊虹宇
WHERE Sno200215132;观察视图IS_Student、IS_Student2以及基本表Student中的数据的变化情况。
练习9删除信息系学生视图IS_Student中学号为200215135的记录。
DELETE
FROM IS_Student
WHERE Sno200215135;观察视图IS_Student、IS_Student2以及基本表Student中的数据的变化情况。
4删除视图即删除视图的定义 练习8删除视图S_G和视图IS_Student2。
DROP VIEW S_G;
DROP VIEW IS_Student2;思考如何删除视图IS_Student及其导出的其他视图提示SQL Server的DROP VIEW 语句中不支持CASCADE
扩展练习 首先执行S_T.sql重建示例数据库S_T 然后写出并执行SQL语句完成以下各种操作记录查询结果
AS
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student
WHERE SdeptCS
WITH CHECK OPTION;通过视图CS_Student查询计算机系男生的详细信息
通过视图CS_Student将计算机系的一个新生元组学号为200215120姓名为龙语嫣性别为女年龄17岁插入表中
INSERT
INTO CS_Student
VALUES(200215120,龙语嫣,女,17,CS);如果换成如下语句系别改为信息系
INSERT
INTO CS_Student
VALUES(200215120,龙语嫣,女,17,IS);会出现什么问题
通过视图CS_Student将计算机系某个男生学号为200215121的年龄修改为19岁 将信息系所有女生的学号及她的平均成绩定义为一个视图S_F_G 通过视图S_F_G查询信息系所有女生中平均成绩在85-95之间的学号及平均成绩 7删除视图IS_Student和视图S_F_G 创建表的视图 例如建立信息系学生的视图 CREATE VIEW IS_StudentAS SELECT SnoSnameSageFROM StudentWHERE Sdept IS利用视图完成表的查询 例如查询信息系选修了1号课程的学生
SELECT SnoSname
FROM IS_StudentSC
WHERE IS_Student.Sno SC.Sno ANDSC.Cno 1删除表的视图 例如
DROP VIEW IS_Student