数据库 之视图基本操作SQL语句

一、创建视图

语句格式

CREATE  VIEW  <视图名>  [(<列名>  [,<列名>])]
AS  <子查询>
[WITH  CHECK  OPTION];

1、子查询可以是任意的SELECT语句,是否可以含有ORDER BY子句和DISTINCT短语,则决定具体系统的实现
2、WITH CHECK OPTION:对视图进行UPDATE,INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)

注:修改基表的结构后,可能导致表与视图的映象关系被破坏,从而导致该视图不能正确工作

例1:建立信息系学生的视图

CREATE VIEW IS_Student
AS SELECT Sno,Sname,Sage FROM Student WHERE  Sdept= 'IS';

例2:建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生

CREATE VIEW IS_Student
AS SELECT Sno,Sname,Sage FROM  Student WHERE  Sdept= 'IS'
WITH CHECK OPTION;
1、基于多个基表的视图

例3:建立信息系选修了1号课程的学生的视图(包括学号、姓名、成绩)

CREATE VIEW IS_S1(Sno,Sname,Grade)
AS SELECT Student.Sno,Sname,Grade FROM  Student,SC
WHERE  Sdept= 'IS' AND Student.Sno=SC.Sno AND SC.Cno= '1';
2、基于视图的视图

例4:建立信息系选修了1号课程且成绩在90分以上的学生的视图

// IS_S2 基于视图IS_s1:FROM  IS_S1
CREATE VIEW IS_S2
AS SELECT Sno,Sname,Grade FROM  IS_S1  WHERE  Grade>=90;
3、带表达式的视图

例5:定义一个反映学生出生年份的视图

// 表达式:2014-Sage
CREATE VIEW BT_S(Sno,Sname,Sbirth)
AS SELECT Sno,Sname,2014-Sage FROM  Student;
4、分组视图

例6:将学生的学号及平均成绩定义为一个视图

// 分组:GROUP BY
CREAT  VIEW S_G(Sno,Gavg)
AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;
二、删除视图

语句的格式:

DROP  VIEW  <视图名>[CASCADE];
  • 该语句从数据字典中删除指定的视图定义
  • 如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除
  • 删除基表时,由该基表导出的所有视图定义都必须显式地使用DROP VIEW语句删除
三、查询视图

查询视图与查询基本表相同
例子:在信息系学生的视图中找出年龄小于20岁的学生

SELECT Sno,Sage FROM IS_Student WHERE Sage<20;
四、更新视图

更新视图和更新基本表相同

注:一些视图是不可更新的——当对视图的更新无法转换成对基本表SC的更新时,如修改平均成绩视图中某个学生的平均成绩不可实现

例:

// 插入
INSERT INTO IS_Student VALUES(201215129,’赵新’,20);
// 修改
UPDATE IS_Student SET Sname= '刘辰' WHERE Sno= ' 201215122 ';
// 删除
DELETE FROM IS_Student WHERE Sno= ' 201215129 ';
发布了30 篇原创文章 · 获赞 3 · 访问量 3896

猜你喜欢

转载自blog.csdn.net/qq_41956139/article/details/104266494