前言:
而今兄弟们对“创建视图时能使用的子句是”可能比较珍视,朋友们都想要剖析一些“创建视图时能使用的子句是”的相关知识。那么小编同时在网摘上搜集了一些对于“创建视图时能使用的子句是””的相关内容,希望姐妹们能喜欢,兄弟们快快来了解一下吧!视图是从一个或几个基本表(或视图)导出表。它与基本表不同,它是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它就可以看到数据库中自己感兴趣的数据及其变化。
一、定义视图
1.建立视图
CREATE VIEW <视图名>[(<列名>[,<列名>]……)]AS <子查询>[WITH CHECK OPTION];
其中,子查询可以是任意复杂的SELECT 语句,但通常不充许含有ORDET BY 子句和 DISTINCT 短语。
WITH CHECK OPTION 表示对视图进行UPDATE,INSERT和DELECT操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。
组成视图的属性列名或者全部省略或者全部指定,没有第三种选择。如果省略了视图的各个属性列明,则隐含该视图由子查询中SELECT 子句目标中的诸字段组成。但下列三种情况必须明确指定组成视图的所有列名:
(1)某个目标列不是单纯的属性名,而是聚集函数或列表达式;
(2)多表连接时选出了几个同名列作为视图的字段;
(3)需要在视图中为某个列启用新的更合适的名字
建立信息系学生的视图
CREATE VIEW IS_StudentASSELECT Sno,Sname,SageFROM StudentWHERE Sdept='IS';
建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。
CREATE VIEW IS_Student /*后面要使用该视图*/ASSELECT Sno,Sname,SageFROM StudentWHERE Sdept='IS'WITH CHECK OPTION;IS_Student /*后面要使用该视图*/ASSELECT Sno,Sname,SageFROM StudentWHERE Sdept='IS'WITH CHECK OPTION;
由于在定义IS_Student视图时加上WITH CHECK OPTON 子句,以后对该视图进行插入、修改和删除操作时,RDBMS会自动加上Sdept=’IS'的条件。
当建立在多个基本表时;
建立信息系选修了1号课程的学生的视图。
CREATE VIEW IS_S1(Sno,Sname,Grade)ASSELECT Student.Sno,Sname,GradeFROM Student,SCWHERE Sdept='IS'AND Student.Sno=SC.Sno AND SC.Cno='1';
将学生的学号及他的平均成绩定义为一个视图。
CREATE VIEW S_G(Sno,Gave)ASSELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;
2.删除视图
该语句的格式为:
DROP VIEW <视图名>[CASCADE];
视图删除后视图的定义将从数据字典中删除。如果该视图上还导出了其它视图,则使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除。
二、查询视图
在信息系学生的视图中找出年龄小于20岁的学生。
SELECT Sno,SageFROM IS_StudentWHERE Sage<20;IS_StudentWHERE Sage<20;
本例转换后的查询语句为:
SELECT Sno,SageFROM StudentWHERE Sdept='IS'AND Sage<20;AND Sage<20;三、更新视图
由于视图是不实际存储数据的虚表,因此对视图的更新,最终要转换对基本表的更新。
将信息系学生视图IS_Student中学号为14042401的学生姓名改为“刘成”。
UPDATE IS_StudentSET Sname='刘成'WHERE Sno='14042401';
转换后的更新语句为:
UPDATE StudentSET Sname='刘成'WHERE Sno='14042401' AND Sdept='IS';
向信息系学生视图IS_Student 中插入一个新的学生记录,其中学号为14042405,姓名为赵新,年龄为20岁。
INSERT INTO IS_StudentVALUES('14042405','赵新',20);
转换对基本表的更新:
INSERTINTO Student(Sno,Sname,Sage,Sdept)VALUES('14042405','赵新',20,'IS');,Sdept)VALUES('14042405','赵新',20,'IS');
删除信息系学生视图IS_Student 中学号为14042405的记录。
DELETEFROM IS_StudentWHERE Sno='14042405';
转换为对基本表的更新:
DELETE FROM StudentWHERE Sno='14042405'AND Sdept='IS';四、视图作用
1.视图能够简化用户操作;
2.视图使用户能以多种角度看待统一数据;
3.视图对重构数据库提供了一定程度的逻辑性;
4.视图能够对机密数据提供安全保护;
5.适当的利用视图可以更清晰的表达查询。
标签: #创建视图时能使用的子句是