什么是视图?
1)虚表,是从一个或几个基本表(或视图)导出的表。
2)只存放视图的定义,不存放视图对应的数据。
3)基表中的数据发生变化,从视图中查询出的数据也随之改变。
视图的优点
1)简单性。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件。
2)安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其他数据则既看不见也取不到。
一、创建视图
语句格式
CREATE VIEW
<视图名> [(<列名> [,<列名>]…)]
AS
<子查询>
二、删除视图
语句的格式:
DROP VIEW <视图名>
涉及的表格
1、teacher表
2、student表
3、course表
4、score表
1、查询95031班且姓“王”的同学的学号和姓名。
select sno,name
from student
where name like '王%' and class = '9503'
2、查询以字符j开头且课程名中仅四个字符的课程号和课程名。
select cno,cname
from course
where cname like 'j____'
3、查询以字符“java_“开头课程的课程名以及该门课的授课教师编号。
select tno,cname
from course
where cname like 'java_%'
4、查询课程编号中包含数字4的课程的课程名和课程号。
select cname,cno
from course
where cno like '%4%' or cno like '4%' or cno like '%4'
5、查询最高成绩在80-90分之间的课程名。
select cname
from course
where cno in(
select cno
from score
group by cno
having max(grade) between 80 and 90
)
6、为95031班级学生建立一个视图V1,以方便随时查询该班学 生的相关情况。(学号 姓名 年龄 班级)。
create view V1(学号,姓名,年龄,班级)
as
select sno,name,2020-birth,class
from student
where class = '95031'
7、建立一个95033班且选修了3105课程的学生视图V2(学号 姓名 课程号 成绩)
create view V2(学号,姓名,课程号,成绩)
as
select score,sno,name,cno,grade
from student,score
where class = '95033' and cno = '3105'
8、建立一个95033班及选修了3105课程且该门课程在90分以上的学生视图V3(学号 姓名 课程号 成绩)
create view V3(学号,姓名,课程号,成绩)
as
select score.sno,name,cno,grade
from student,score
where class = '95033' and cno ='3105' and grade > 90
9、建立一个电子工程系老师的视图V4(tno tname depart)
create view V4(tno,tname,depart)
as
select tno,tname,depart
from teacher
where depart = '电子工程系'
10、查询电子工程系老师所授课程的课程号和课程名。
该题查询所涉及的表中须包含V4
select cno,cname
from V4,course
where V4.tno = course.tno
11、同时删除视图V1,V2
drop view V1,V2