一、视图的特点
- 虚表,是从一个或几个基本表(或视图)导出的表,既重新创建的表+查询语句,其实也是看得见的表。
- 即存放视图的定义,也存放视图对应的数据
- 基本表中的数据发生变化,从视图中查询出的数据也随之改变
二、创建视图
1、语句格式:
CREATE VIEW
<视图名> [(<列名> [,<列名>]…)]
AS <子查询>
[WITH CHECK OPTION];
WITH CHECK OPTION是对视图进行UPDATE,INSERT和DELETE操作时,要保证修改、插入或删除的元组满足视图定义中的谓词条件(即子查询中的条件表达式)
2、视图定义服从以下限制:
①SELECT 语句不能包含FROM 子句中的子查询。
②SELECT 语句不能引用系统或用户变量。
③SELECT 语句不能引用预处理语句参数。
④视图定义不能引用子程序参数或局部变量。
⑤在视图定义中引用的表或视图必须存在,但是,创建了视图后,能够舍弃定义引用的表或视图。
⑥在视图定义中不能引用TEMPORARY (mysql的关键字)表,不能创建TEMPORARY 视图。
⑦在视图定义中命名的表必须已存在。
⑧不能将触发器与视图关联在一起。
⑨不能为视图创建索引。
例:
建立信息系学生的视图。
CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= 'IS';
建立信息系学生的视图,并要求对视图进行修改和插入操作时仍保证该视图只有信息系的学生 。
CREATE VIEW IS_Student1
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept= 'IS'
WITH CHECK OPTION;
三、删除视图
语句格式:
DROP VIEW <视图名>;
例:
删除视图BT_S
DROP VIEW BT_S;
四、查询视图
查询选修了1号课程的信息系学生
SELECT IS_Student.Sno,Sname
FROM IS_Student,SC
WHERE IS_Student.Sno =SC.Sno AND SC.Cno= '1';
五、更新视图
将信息系学生视图IS_Student中学号”20220222”的学生姓名改为”张立”。
UPDATE IS_Student
SET Sname= '张立'
WHERE Sno= ' 20220222';
注:
(1)如果视图中数据是来自于一个基本表时,修改视图中的数据,基本表数据会更新。而且修改表中数据时,对应视图也会更新。
(2)如果视图数据来源于两个表时,修改视图数据时会报错,无法修改。
向信息系学生视图IS_Student中插入一个新的学生记录,其中学号为”20202020”,姓名为”赵新”,年龄为20岁
INSERT
INTO IS_Student
VALUES(‘20202020’,’赵新’,20);
注:
(1)如果视图中数据是来自于一个基本表时,可以使用INSERT语句通过视图向基本表插入数据,视图中不会增加数据,基本表增加。
(2)当视图所依赖的基本表有多个时,不能向该视图插入数据,因为这将会影响多个基本表。
删除信息系学生视图IS_Student中学号为”20212021”的记录
DELETE
FROM IS_Student
WHERE Sno= ' 20212021';
六、视图的作用
(1)视图能够简化用户的操作
(2)视图使用户能以多种角度看待同一数据
(3)视图对重构数据库提供了一定程度的逻辑独立性
(4)视图能够对机密数据提供安全保护
(5)适当的利用视图可以更清晰的表达查询
本文详细介绍了视图在数据库中的特点,包括虚表性质、创建与删除视图的方法,以及查询、更新和插入视图的操作。重点讲解了视图如何简化用户操作、提供逻辑独立性和安全性。通过实例展示了如何创建带有检查选项的视图并进行实际操作。
1255

被折叠的 条评论
为什么被折叠?



