数据库 之视图基本操作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 ';

Copyright © 2088 世界杯点球_2022世界杯亚洲预选赛 - ktllb.com All Rights Reserved.
友情链接