本文数据集见实验一
视图
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。
视图的规则和限制:
- 与表一样,必须唯一命名(不能出现同名视图或表名)
- 创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响
- 视图不能添加索引,也不能有关联的触发器或者默认值
- 视图可以提高安全性,必须具有足够的访问权限
order by
可以用在视图中,但是如果从该视图检索数据select
中也含有order by
,那么该视图中的order by
将被覆盖- 视图可以和表一起使用
实验目的
- 掌握使用SQL命令进行视图的创建、修改和删除。
- 掌握使用SQL命令对视图访问数据。
实验内容
1.创建一个简单的视图,查询课程号101的不及格的学生信息;
创建视图
create view 视图名 as select语句;
create view 学生信息 as select * from XSQK where 学号 in(select 学号 from XS_KC where 课程号='101' and 成绩<60);
2.修改简单视图,查询课程号107成绩介于70-90的学生信息;
alter view 学生信息 as select * from XSQK where 学号 in(select 学号 from XS_KC where 课程号='107' and 成绩 between 70 and 90);
3.使用视图访问数据;
select * from 学生信息;
使用视图访问数据和基本表相同。
4.删除所创建的视图;
使用
drop view 视图名;
就可以删除视图
drop view 学生信息;
5.创建一个简单视图,查询“计算机系”学生的信息;
create view 计算机系学生信息 as select * from XSQK where 所在系='计算机';
6.创建一个简单视图,统计每门课程的选课人数和最高分;
create view 选课人数和最高分 as select 课程名,count(XS_KC.课程号) as 选课人数,max(成绩) as 最高分 from XS_KC,KC where XS_KC.课程号=KC.课程号 group by课程名;
7.创建一个复杂视图,查询与“俞奇军”住在同一寝室的学生信息,即其联系电话相同;
reate view 俞奇军宿舍学生信息 as select * from XSQK where 联系电话=(select 联系电话 from XSQK where 姓名='俞奇军');
创建视图:
查询视图:
8.创建一个复杂视图,查询选修了课程的同学的姓名,课程名及成绩;
create view 已选课学生信息 as select XSQK.姓名,KC.课程名,XS_KC.成绩 from XSQK,XS_KC,KC where(XS_KC.学号=XSQK.学号 and XS_KC.课程号=KC.课程号);