Oracle-31-对视图DML操作
2017-07-25 17:52
190 查看
一、对视图进行DML操作
1.创建一个视图v_person
create or replace noforceview v_person
as select *from person
where id between 1003 and 1007;
2.向视图v_person中进行insert操作
insertinto
v_person (id,name) values(1010,’J’)
【注意】对视图进行DML操作时候。仅仅能对简单视图运行DML操作。复杂视图不支持DML操作。因为v_person没有使用with
check option。因此对于子查询检索到的行能够进行增删改查。
例1:练习对视图(没有with check option)插入数据。
解:当前用户下视图v_stu的数据
视图v_stu的基表是student表,该表当前的数据:
对视图插入新数据:
查询视图发现多了一行:
查询基表发现多了一行:
因此。对视图进行DML操作可达到改动基表数据的效果。
例2:练习对视图(有with check option)插入数据。
解:创建视图并将已存在的视图覆盖。带上with check option:
然后插入例如以下数据:
报错原因是’男’不满足视图中的where条件。视图有with check option是对新数据进行校验。假设满足where条件,则同意插入,否则不同意。
同理,例如以下报错是由于视图在创建的时候要求仅仅读。即with read only:
例3:练习两张基表生成视图且验证是否能在该视图中插入新数据。
解:当前的sc表:
当前的course表:
基于sc表和course表创建视图v_2,注意下图SQL命令:
向视图中插入新数据:
报错原因是该视图是基于两张表创建的。所以无法插入新数据。
【注意】
下面三种情况无法对视图做DML操作:
1.带有with check option的视图,假设插入数据不满足where条件则无法做DML操作。如例2;
2.带有with read only的视图。如例2;
3.基于两张及两张以上基表的视图,比方student,course,sc表生成一个视图,那么这个视图无法做DML操作如例3。
1.创建一个视图v_person
create or replace noforceview v_person
as select *from person
where id between 1003 and 1007;
2.向视图v_person中进行insert操作
insertinto
v_person (id,name) values(1010,’J’)
【注意】对视图进行DML操作时候。仅仅能对简单视图运行DML操作。复杂视图不支持DML操作。因为v_person没有使用with
check option。因此对于子查询检索到的行能够进行增删改查。
例1:练习对视图(没有with check option)插入数据。
解:当前用户下视图v_stu的数据
视图v_stu的基表是student表,该表当前的数据:
对视图插入新数据:
查询视图发现多了一行:
查询基表发现多了一行:
因此。对视图进行DML操作可达到改动基表数据的效果。
例2:练习对视图(有with check option)插入数据。
解:创建视图并将已存在的视图覆盖。带上with check option:
然后插入例如以下数据:
报错原因是’男’不满足视图中的where条件。视图有with check option是对新数据进行校验。假设满足where条件,则同意插入,否则不同意。
同理,例如以下报错是由于视图在创建的时候要求仅仅读。即with read only:
例3:练习两张基表生成视图且验证是否能在该视图中插入新数据。
解:当前的sc表:
当前的course表:
基于sc表和course表创建视图v_2,注意下图SQL命令:
向视图中插入新数据:
报错原因是该视图是基于两张表创建的。所以无法插入新数据。
【注意】
下面三种情况无法对视图做DML操作:
1.带有with check option的视图,假设插入数据不满足where条件则无法做DML操作。如例2;
2.带有with read only的视图。如例2;
3.基于两张及两张以上基表的视图,比方student,course,sc表生成一个视图,那么这个视图无法做DML操作如例3。
相关文章推荐
- Oracle-31-对视图DML操作
- oracle视图的DML操作
- Oracle视图可以进行DML操作的条件
- Oracle连接视图DML操作的限制
- Oracle 视图可以DML操作的条件
- Oracle连接视图DML操作的限制
- oracle 删除列与视图操作
- Oracle总结第二篇【视图、索引、事务、用户权限、批量操作】
- oracle视图及其他对象操作
- oracle全攻略——查询优化,DDL和DML操作
- 为什么在powerdesigner成功将表生成到oracle,用sql操作提示表或视图不存在
- oracle:视图操作,view
- oracle 用户表数目,表大小,视图数目及表空间等查询增加修改删除操作
- Oracle总结【视图、索引、事务、用户权限、批量操作】
- Oracle物化视图操作
- 通过flashback命令回撤Oracle中误操作的Dml命令
- oracle中闪回错误的dml操作原理
- MySQL深入01-SQL语言-数据字典-服务器变量-数据操作DML-视图
- 为什么在powerdesigner成功将表生成到oracle,用sql操作提示表或视图不存在
- oracle 视图创建和操作,创建简单,复杂的视图,创建基表不存在的视图,视图增删改,查看视图的结构