oracle:对视图DML操作

一、对视图进行DML操作

  1.创建一个视图v_test

   create or replace view v_test
as select *from test where c_sec_code = '00939 HS'

  2.向视图 v_test中进行insert操作

   insert into v_test (c_sec_code,d_sett) values('00939 HS', date'2018-01-01')

 ps:只能对简单的视图进行DML操作,复杂的视图是无法执行DML操作.

 练习: 当前视图v_test数据

 

视图v_test的基表test,该表当前数据是:

   

 对视图插入数据

  

 此时查询视图,多了一行数据

 查询基表,多了一行数据

 练习: 当前视图v_test数据(加上with check option)

 重新创建视图: create or replace view v_test
as select *from test where c_sec_code = '00939 HS' with check option

  执行插入语句

with check option对数据进行校验,如果满足where条件,才允许插入,否则不允许插入. 

练习(with read only)

 创建视图

  create or replace view v_test
as select *from test where c_sec_code = '00939 HS' with read only

执行插入语句:insert into v_test (c_sec_code,d_sett) values('00939 HS', date'2018-01-01'),会报错.因为视图在创建的时候要求只读。

  由于视图可以是基于多个表的链接查询,所以,视图可以简化用户的查询,允许用户从多个表中检索数据而不需要知道基表是如何连接的。

  视图可以有访问权限,但可以对基表没有访问权限,从而限制了数据库的访问。 

  简单的视图可以实现对基表的DML操作。

当视图执行DML操作时,同样受基于表上的约束的限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值