实验目的
(1)使用SQL语句CREATE VIEW创建视图的用法。
(2)了解删除视图的SQL语句DROP VIEW的用法。
(3)掌握查询视图的语法结构。
二、实验内容
- 练习建立视图:
(1) 建立计算系学生的视图view_cs,并要求进行修改和插入操作时仍需保证该视图只有计科的学生,视图的属性名为Sno,Sname,Ssex,Sage,Sdept。
CREATE view view_cs(Sno,Sname,Ssex,Sage,Sdept)
as
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM student
WHERE Sdept='cs'
with check option
(2) 建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图view_xk。
CREATE view view_xk(Sno,Sname,cname,grade)
as
SELECT student.Sno,Sname,cname,grade
FROM student,sc,course
WHERE student.sno=sc.sno and course.cno=sc.cno
(3) 定义一个反映学生出生年份的视图BT_S。
CREATE view BT_S(Sno,Sname,Sbirth)
as
SELECT Sno,Sname,2022-Sage
FROM student;
(4) 删除第(3)步建立的视图
DROP view BT_S;
- 练习基于视图的查询操作
(1) 在计科的学生视图view_cs中找出年龄小于20岁的学生姓名和年龄。
SELECT Sname,Sage
FROM view_cs
WHERE Sage<20
(2) 在视图view_xk中查询成绩在85分以上的学生学号、姓名和课程名称。
SELECT Sno,Sname,cname
FROM view_xk
WHERE grade>85
- 练习基于视图的更新操作
(1) 通过计科学生视图view_cs将学号为’202215121’的学生姓名改为“张玮”。
UPDATE view_cs
set Sname='张玮'
WHERE Sno=202215001
(2) 通过计科学生视图view_cs向学生表中添加一条新纪录,(‘888888888’,‘李锋’,‘男’,20,‘cs’)。
INSERT into view_cs VALUE ('888888888','李锋','男',20,'cs')
(3) 通过计科学生视图view_cs删除学生表中学号为’ 888888888’的记录。
DELETE FROM view_cs
WHERE Sno=888888888