视图定义
建立视图
create view <视图名>[(<列名>[,<列名>]...)]
as <子查询>
[with check option]
加:with check option 子句,在视图增删改除数据时,关系数据库系统会检查视图定义中的条件,若不满足条件则拒绝执行操作。
eg1:建立信息学生的视图
create view IS-Student
as
select Sno,Sname,Sage
from student
whit sdept='IS'
eg2:建立信息系学生的视图,并要求进行修改和插入插入操作时仍需保证该视图只有信息系的学生。
create view IS_Student
as
select Sno,Sname,Sage
from Student
where Sdept='IS'
with check option;
eg3:建立信息系选修了1号课程的学生的视图(包括学号,姓名,成绩)
create view IS_IS(Sno,Sname,Grade)
as
select Student.Sno,Sname,Grage
from Student,SC
where Sdept='IS'AND
Student.Sno=SC.Sno AND
SC.Cno='1'
eg4:建立信息系选修了1号课程且成绩在90分以上的学生的视图。
create view IS_S2
as
selsect Sno,Sname,Grade
from IS_SI
where Grade>=90
eg5:定义一个反映学生出生年份的视图。
create view BT-S(Sno,Sname,Sbirth)
as
select Sno,Sname,2014-Sage
from Student;
eg6:将学生的学号及成绩定义为一个视图。
create view S_G(Sno ,Gavg)
select Sno,AVG(Grade)
from SC
group by Sno
删除视图:
drop view <视图名> [cascade];
查询视图
select Sno , Sage
from IS_Student
where Sage<20;
select sno,sage
from student
where='IS' and sage<20;
where子句是不能用聚集函数作为条件表达式的,因此执行修正后的查询将会出现语法错误。
craete Sno avg(grade)
from sc
group by sno
having avg (grade)>=90;
更新视图
eg1:将信息系学生视图is-student 中的学号是20215122的学生姓名改为“小明”
-------更新-----------
update IS-student
set name="小明"
where Sno="20215122";
-------插入-----------
inser
into IS-student
values('202115129','晓明',20);
视图作用
- 简化视图用户操作
- 使用户能以多种角度看待同一数据
- 对重构数据库提供了一定的程度的逻辑独立性
- 对机密数据提供安全保护
- 适当利用视图可以更清晰地表达查询
sqL可以分为数据定义,数据查询,数据更新,数据控制。