数据库学习之视图管理

本文详细介绍了视图在数据库中的特点,包括虚表性质、创建与删除视图的方法,以及查询、更新和插入视图的操作。重点讲解了视图如何简化用户操作、提供逻辑独立性和安全性。通过实例展示了如何创建带有检查选项的视图并进行实际操作。

一、视图的特点

  • 虚表,是从一个或几个基本表(或视图)导出的表,既重新创建的表+查询语句,其实也是看得见的表。
  • 即存放视图的定义,也存放视图对应的数据
  • 基本表中的数据发生变化,从视图中查询出的数据也随之改变

二、创建视图

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”,姓名为”赵新”,年龄为20INSERT
INTO IS_Student
VALUES(20202020,’赵新’,20);

注:
(1)如果视图中数据是来自于一个基本表时,可以使用INSERT语句通过视图向基本表插入数据,视图中不会增加数据,基本表增加。
(2)当视图所依赖的基本表有多个时,不能向该视图插入数据,因为这将会影响多个基本表。

删除信息系学生视图IS_Student中学号为”20212021”的记录 
DELETE
FROM IS_Student
WHERE Sno= ' 20212021';

六、视图的作用

(1)视图能够简化用户的操作
(2)视图使用户能以多种角度看待同一数据
(3)视图对重构数据库提供了一定程度的逻辑独立性
(4)视图能够对机密数据提供安全保护
(5)适当的利用视图可以更清晰的表达查询

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值