一、視圖的創建:
1 創建信息系學生信息的視圖 (is_view) ;
create view is_view(sno,sname,ssex,sage,sdept)
as
select *
from student
where sdept='IS';
2 創建信息系選修了1號課程的學生的視圖;
create view is_1_view(sno,sname,ssex,sage,sdept)
as
select student.*
from student,sc
where student.sdept='IS' and sc.sno=student.sno and sc.cno=1;
3 建立信息系選修了1號課程且成績在90分以上的學生的視圖;
create view cs_1_90_view(sno,sname,ssex,sage,sdept)
as
select student.*
from student,sc
where student.sdept='IS' and sc.sno=student.sno and sc.cno=1 and sc.grade>90;
4 創建一個反映學生出生年份的視圖
create view birth_view (sno,birth)
as
select sno,Year(GetDate())-sage
from student;
5 將所有女生的記錄定義為一個視圖;
create view nv_view(sno,sname,ssex,sage,sdept)
as
select *
from student
where ssex='女';
6 將所有學生的學號和他的平均成績定義為一個視圖S_G。
create view S_G(sno,savg)
as
select sno,avg(grade)
from sc
group by sno;
二、 視圖結構的修改:
1 將視圖 is_view 修改為信息系的所有女生的視圖;
drop view is_view;
create view is_view(sno,sname,ssex,sage,sdept)
as
select *
from student
where sdept='IS' and ssex='女';
或者
alter view is_view
as
select sno,sname,ssex,sage,sdept
from student
where sdept='IS' and ssex='女';
?
三、查詢視圖
1 在信息系的學生視圖中查詢年齡小于20歲的學生:
select sno
from is_view
where sage<20;
2 查詢信息系選修了1號課程的學生:
select sno
from is_1_view;
3 在視圖S_G中查詢平均成績在90分以上的學生的學號和平均成績:
select sno,savg
from S_G
where savg>90;
四、更新視圖:
1 將信息系學生視圖is_view中學號為“95002”學生姓名改為”劉辰”;
update is_view
set sname='劉辰'
where sno=95002;
2 向信息系學生視圖is_view中插入一個新的學生記錄, 學號為95029,姓名為”趙新”, 年齡為20歲;
insert
into is_view(sno,sname,ssex,sage,sdept)
values(95029,'趙新','男',20,'IS');
3 刪除信息系學生視圖is_view中學號為95004的學生的記錄。
delete
from is_view
where sno=95004;
五、刪除視圖
1 刪除視圖is_view
drop view is_view;
另外視圖表的查詢和普通表的查詢沒有區別,視圖表的更新會有一些限制。
由于視圖是基于基本表的虛表,所以當基本表變化時視圖也會跟著更新,因此一些復雜的連表查詢可以直接把需要的數據生成一個視圖