存储对象:视图

视图是一种虚拟表,里面的数据并不真实存在。它可以简化对数据的理解和对数据的操作,把操作封装在视图里然后操作即可;通过视图,用户只能查询和修改他们看到的数据,可以帮助用户屏蔽基本表变化所带来的影响

创建视图 :create  [or replace] view 视图名[(列名列表)] as select语句 [with [cascade | local] check option]  //创建时or replace 可以不加

查询视图 :show create view;//查询创建视图的sql语句

                   select * form 视图名称...   //像查询表一样对视图进行查询

修改视图 :create  [or replace] view 视图名[(列名列表)] as select语句 [with [cascade | local] check option]

                        //修改视图时必须加上 or replace

                   alter view 视图名[(列名列表)] as select语句 [with [cascade | local] check option]

删除视图 :drop view [if exists] 视图名 

视图的检查选项with check option

由于对视图的操作最终会转换到对基本表的操作,所以插入数据时只需满足基本表条件即可,那么按条件查询视图时,有时候发现从视图中查询的数据和基本表中的数据不一致,所以要为视图加上检查选项,即不满足视图创建条件的数据不可插入。

cascaded 当创建视图没有with cascaded check option,对视图操作时就会忽略条件

                当创建视图有with cascaded check option,对视图查询时就会看是否满足条件,如果创建的视图v2与另一个视图v1还存在关联,那么会递归查看视图v1的条件是否满足,即相当与v1也存在了with check option检查选项。

local 当往v1中插入数据时,不会检查v1的条件,当往v2插入数据时,因为v2有检查选项,会检查v2的条件,这时因为v2与v1关联,会递归到v1,但因为v1没有检查选项,所以不会检查v1的条件,如果是cascaded,v1会被认为有检查选项,要去检查v1的条件。

这就是local和cascaded的区别

不是所有的视图都可以更新

要使视图可更新,视图中的行与基本表中的行必须是一对一的关系,如果视图包含下列任意一项,则不可更新。

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值