实验三 视图操作(4学时)
【实验目的】
1. 学会使用SQL语句创建和使用视图,加深对视图和SQL Server基表作用的理解。 2. 了解数据库安全控制的机制,以及自主存取控制方法。 【实验要求】
1.掌握创建、修改视图的SQL语句的用法。
2.掌握使用企业管管理器创建、修改视图的方法。 3.掌握查看视图的系统存储过程的用法。 4.掌握视图的使用方法。
5.掌握SQL有关用户、角色及操作权限的管理方法。 【实验内容】 (一)定义视图
以Student 、SC、Course表为基础完成以下视图定义。
1.定义计算机系学生基本情况视图V_Computer。
2.将Student、Course 和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G。
3.将各系学生人数,平均年龄定义为视图V_NUM_AVG。
4.定义一个反映学生出生年份的视图V_YEAR。
5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G。 6.将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G。 (二)使用视图
1. 查询以上所建的视图结果。
2. 查询平均成绩为90分以上的学生学号、姓名和成绩。
3. 查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩。 4. 按系统计各系平均成绩在80分以上的人数,结果按降序排列。
(三)修改视图
1. 通过视图V_Computer,分别将学号为“04261001”和“04261002”的学生姓名更改为“S1_MM”,”S2_MM” 并查询结果。
2. 通过视图V_Computer,新增加一个学生记录 ('S12','YAN XI',19,'IS'),并查询结果。
3. 通过视图V_Computer,新增加一个学生记录 ('S13','YAN XI',19,'MA'),并查询结果。 4. 通过视图V_Computer,删除学号为“S12”和“S13”的学生信息,并查询结果。
5. 通过视图V_S_C_G,将学号为“04261001”的姓名改为“S1_MMM”,是否可以实现?并说明原因。
6. 通过视图V_AVG_S_G,将学号为“04261001”的平均成绩改为90分,是否可以实现?并说明原因。
【实验步骤】 一、视图操作 (一)定义视图
定义计算机系学生基本情况视图V_Computer。 CREATE VIEW V_COMPUTER AS
1
江苏师范大学
SELECT *
FROM student
WHERE sdept='计算机'
将Student、Course和SC表中学生的学号、姓名、课程号、课程名,成绩定义为
视图V_S_C_G。 CREATE VIEW V_S_C_G AS
SELECT student.sno,student.sname,course.cno,course.cname,sc.grade FROM student,course,sc
WHERE student.sno=sc.sno and sc.cno=course.cno 参考上例,自行完成实验内容中其他视图的定义。
(二)使用视图
查询以上所建的视图结果。
Select * from V_Computer
查询平均成绩为90分以上的学生学号、姓名和成绩。
Select sno,sname, avgrade from V_AVG_S_G where avgrade>=90
注:此例中出现的属性名应与创建视图V_AVG_S_G的属性名一致。参考上例,自行完成实验内容中其他视图的定义。 (三)修改视图
通过视图V_Computer,分别将学号为“04261001”和“04261002”学生姓名更改为
“S1_MM”,”S2_MM” 并查询结果。 update V_Computer set sname='S1_MM'
WHERE sno like '04261001' GO
通过视图V_Computer,新增加一个学生记录 ('S12','YAN XI',19,'IS'),并查询结果。
INSERT INTO V_Computer Values ('S12','YAN XI',19,'IS') Go
Select * from V_Computer 通过视图V_Computer,新增加一个学生记录 ('S13','YAN XI',19,'MA'),并查询结果。
INSERT INTO V_Computer Values ('S13','YAN XI',19,'MA') go
Select * from V_Computer
通过视图V_Computer,删除学号为“S12”和“S3”的学生信息,并查询结果.
delete from V_Computer WHERE sno='S12' or sno='S13' 请根据上述例子,可参考以下所给的操作要求自行设计不同情况的DML语句(不少于
20条语句),并进行验证。
(1)建立“计91”班学生的视图; (2)建立“计911”班学生的视图,并要求进行修改与插入时,仍须保证该视图只有“计91”班学生; (3)建立“计91”班选修了“C01”课程的学生的视图,定义视图名为“v_info_C01_student1”; (4)建立“计91”班选修了“C01”课程且成绩在90分以上的学生的视图,定义视图名为
2
江苏师范大学
“info_c01_student2”;
(5)定义一个反映学生年龄的视图,定义视图名为“v_birth_student”;
(6)将学生表中所有女生记录定义为一个视图,视图名为“v_female_student”; (7)将学生的学号及其平均成绩定义为一个视图,视图名为“v_average_student”; (8)删除表student后,重新建student表,再建视图“V_CS_student1”,结果如何? (9)在“计91”班学生视图中找出年龄小于22岁(现在的年龄)的学生; (10)利用视图查询“计91”班选修了“C01”课程的学生; (11)通过(53)中的“计91”班视图修改某个学生的名字; (12)通过(54)中的“计91”班视图,插入一个新学生记录。 (13)通过(54)中的“计91”班视图,删除一个学生记录。 【思考题】
1. 为什么要建立视图?视图和基本表有什么不同?
3
因篇幅问题不能全部显示,请点此查看更多更全内容