实验五视图操作(2学时)
【实验目的】
1. 学会使用SQL语句创建和使用视图,加深对视图和SQL Server基表作用的理解。
2. 了解数据库安全控制的机制,以及自主存取控制方法。
【实验要求】
1.掌握创建、修改视图的SQL语句的用法。
2.掌握使用企业管管理器创建、修改视图的方法。
3.掌握查看视图的系统存储过程的用法。
4.掌握视图的使用方法。
5.掌握SQL有关用户、角色及操作权限的管理方法。
【实验内容】
一、视图操作
(一)定义视图
以Student 、Course表为基础完成以下视图定义。
1.定义计算机系学生基本情况视图V_Computer。
2.将Student Course 和Student_course表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G。
3.将各系学生人数,平均年龄定义为视图V_NUM_AVG。
4.定义一个反映学生出生年份的视图V_YEAR。
5.将各位学生选修课程的门数及平均成绩定义为视图V_A VG_S_G。
6.将各门课程的选修人数及平均成绩定义为视图V_A VG_C_G。
(二)使用视图
1. 查询以上所建的视图结果。
2. 查询平均成绩为90分以上的学生学号、姓名和成绩。
3. 查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩。
4. 按系统计各系平均成绩在80分以上的人数,结果按降序排列。
(三)修改视图
1. 通过视图V_IS,分别将学号为“S1”和“S4”的学生姓名更改为“S1_MMM”,”S4_MMM” 并查询结果。
2. 通过视图V_IS,新增加一个学生记录('S12','YAN XI',19,'IS'),并查询结果。
3. 通过视图V_IS,新增加一个学生记录('S13','YAN XI',19,'MA'),并查询结果。
4. 通过视图V_IS,删除学号为“S12”和“S3”的学生信息,并查询结果。
5. 要通过视图V_S_C_G,将学号为“S12”的姓名改为“S12_MMM”,是否可以实现?并说明原因。
6. 要通过视图V_A VG_S_G,将学号为“S1”的平均成绩改为90分,是否可以实现?并说明原因。
二、数据库安全性控制
1.在企业管理器中为所属的SQL服务器设置Windows NT安全认证模式。
2.在企业管理器中为自己建立一个服务器用户、数据库用户和数据库角色。
并将自己创建的学生库所有操作权赋予它们,将自设计的数据库的操作权赋予新建的数据库用户。
【实验步骤】
一、视图操作
(一)定义视图
定义计算机系学生基本情况视图V_Computer。
步骤:新建查询-输入代码:
CREATE VIEW V_COMPUTER
AS
SELECT *
FROM student
WHERE dno='计算机'
●将Student Course 和Student_course表中学生的学号,姓名,课程号,课程名,成
绩定义为视图V_S_C_G。
步骤:新建查询-输入代码:
CREATE VIEW V_S_C_G
AS
SELECT student.sno,student.sname,o,ame,student_course.score
FROM student,course,student_course
WHERE student.sno=student_course.sno
●将各系学生人数,平均年龄定义为视图V_NUM_A VG
●定义一个反映学生出生年份的视图V_YEAR
●将各位学生选修课程的门数及平均成绩定义为视图V_A VG_S_G
●将各门课程的选修人数及平均成绩定义为视图V_A VG_C_G
(二)使用视图
1.查询以上所建的视图结果。
2.查询平均成绩为90分以上的学生学号、姓名和成绩。
3.查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩。
4.按系统计各系平均成绩在80分以上的人数,结果按降序排列。
(三)修改视图
通过视图V_IS,分别将学号为“S1”和“S4”的学生姓名更改为“S1_MMM”,”S4_MMM” 并查询结果。
步骤:新建查询-输入代码:
update S_C_GRADE
set sname='S1_MMM'
WHERE sno like 'S1'
GO
update S_C_GRADE
set sname='S4_MMM'
WHERE sno like 'S4'
通过视图V_IS,新增加一个学生记录('S12','YAN XI',19,'IS'),并查询结果
INSERT INTO V_IS
values ('S12','YAN XI',19,'IS')
go
通过视图V_IS,新增加一个学生记录('S13','YAN XI',19,'MA'),并查询结果
通过视图V_IS,删除学号为“S12”和“S3”的学生信息,并查询结果
步骤:新建查询-输入代码:delete from V_IS
WHERE sno='S12' AND sno='S3'。