龙空技术网

(五)数据库视图

today 239

前言:

而今兄弟们对“创建视图时能使用的子句是”可能比较珍视,朋友们都想要剖析一些“创建视图时能使用的子句是”的相关知识。那么小编同时在网摘上搜集了一些对于“创建视图时能使用的子句是””的相关内容,希望姐妹们能喜欢,兄弟们快快来了解一下吧!

视图是从一个或几个基本表(或视图)导出表。它与基本表不同,它是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它就可以看到数据库中自己感兴趣的数据及其变化。

一、定义视图

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.适当的利用视图可以更清晰的表达查询。

标签: #创建视图时能使用的子句是