1、实验目的
理解SQL成熟设计基本规范,能够熟练使用SQL语句来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。
2、实验内容及要求
使用SQL对数据库进行各类查询数据操纵操作,掌握单行数据插入、多行数据插入,理解空值的意义及处理方式;掌握数据的修改,包括单行和多行数据修改,单列修改和多列数据修改;
针对给定的数据库模式以及相应的应用需求,创建视图和带WITH CHECK OPTION的视图,并验证视图WICH CHECK OPTION选项的有效性。
3、实验步骤
create table Student (
Sno char(7) primary key,
Sname char(10) not null,
Ssex char(2),
Sage tinyint,
Sdept char(20)
)
create table Course(
Cno char(6) not null,
Cname char(20) not null,
Credit tinyint,
Semester tinyint,
primary key(Cno)
)
create table SC(
Sno char(7) not null,
Cno char(6) not null,
Grade smallint,
primary key(Sno,Cno),
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno)
)
(1)利用Student、Course和SC表,写出创建满足下列要求的视图的SQL语句。
1)建立学生的学号、姓名、所在系、课程号、课程名、课程学分的视图。
CREATE VIEW v1 AS SELECT Student.Sno,Sname,Sdept,SC.Cno,Course.Cname,Course.Credit
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND Course.Cno=SC.Cno
2)建立学生的学号、姓名、选修课程名和考试成绩的视图。
CREATE VIEW v2 AS SELECT Student.Sno,Sname,Cname,SC.Grade
from Student,SC,Course
where Student.Sno=SC.Sno and sc.Cno=Course.Cno;
3)建立统计每个学生的选课门数的视图,要求列出学生学号和选课门数。
create view v3 as select Sno '学号', COUNT(Cno) '选课门数' from SC group by Sno;
4)建立统计每个学生的修课总学分的视图,要求列出学生学号和总学分(说明:考试成绩大于等于60才可获得此门课程的学分)。
create view v4 as select SC.Sno, sum(Credit) '总学分' from SC,Course Where SC.Cno=Course.Cno and Grade >=60 group by Sno
(2)利用第(1)题建立的视图,完成如下查询:
1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。
select Sname,Cname,Grade from v2 where Grade >= 90;
2)查询选课门数超过3门的学生的学号和选课门数。
select 学号,选课门数 from v3 where 选课门数>3;
3)查询计算机系选课门数超过3门的学生的姓名和选课门数。
select Sname,选课门数 FROM Student,v3
WHERE v3.学号=Student.Sno AND Sdept='计算机系' AND 选课门数>3
4)查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。
select Student.Sno,Sname,Sdept,总学分 from v4,Student where Student.Sno=v4.Sno and 总学分>10
5)查询年龄大于等于19岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。
select Sname,Sage,Sdept,总学分 from v4,Student where Sage>=20 and Student.Sno=v4.Sno and v4.总学分>10;
4、实验小结
本次实验中,我学习了数据库中的视图。视图是一个虚拟表,它是由一个或多个基本表的行或列组合而成的,具有与基本表相同的数据结构。通过这次实验我理解了SQL成熟设计基本规范,能够熟练使用SQL语句来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。 使用SQL对数据库进行各类查询数据操纵操作,掌握单行数据插入、多行数据插入,理解空值的意义及处理方式;掌握数据的修改,包括单行和多行数据修改,单列修改和多列数据修改;针对给定的数据库模式以及相应的应用需求,创建视图和带WITH CHECK OPTION的视图,并验证视图WICH CHECK OPTION选项的有效性。在实验过程中,我们通过使用SQL语句创建了视图,并通过查询语句验证了视图的正确性。总的来说,视图是数据库中非常有用的工具,可以提高查询效率、加强数据安全性和保证数据独立性。