内容发布更新时间 : 2025/1/31 17:48:47星期一 下面是文章的全部内容请认真阅读。
实验五 视图操作 (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_AVG_S_G。 6.将各门课程的选修人数及平均成绩定义为视图V_AVG_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_AVG_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,course.cno,course.cname,student_course.score FROM student,course,student_course WHERE student.sno=student_course.sno
? 将各系学生人数,平均年龄定义为视图V_NUM_AVG ? 定义一个反映学生出生年份的视图V_YEAR
? 将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G ? 将各门课程的选修人数及平均成绩定义为视图V_AVG_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'