一、对视图的更新。
update,insert,delete除了可以作用于单表,还可以作用于视图、子查询,但是有种种限制。
视图(子查询)的限制:
 
1、没有集合操作符(并、差、交);
2、没有DISTINCT操作符;
3、没有聚合函数或分析函数;
4、没有GROUP BY,ORDER BY,MODEL,CONNECT BY, 或者START WITH子句;
5、SELECT中没有集合表达式;
6、SELECT中没有子查询;
7、没有WITH READ ONLY;
8、可更新的关联视图。
9、有INSTEAD OF触发器。
键保留表:基础表的主键或者唯一索引在关联视图中也是唯一的,那么这个基础表就是键保留表。
可更新的关联视图:
 
1、没有WITH READ ONLY;
2、一次只能更新一个根本的基本表;
3、UPDATE规则:所有的更新列必须来自同一个键保留表,如果视图存在WITH CHECK OPTION,那么所有的关联字段和多数引用表的所有字段不能被更新;
4、DELETE规则:可以更新一个键保留表的行,而且可以多次引用,但是多次引用又有WITH CHECK OPTION则不能更新,如果有多个键保留表,那么更新FROM子句的第一个表;
5、INSERT规则:不能明显的或者暗含的引用一个非键保留表的字段,如果存在WITH CHECK OPTION则不能更新。
6、如果视图中有内嵌视图,那么内嵌视图要可以merge到主视图中。
二、INSERT的多表插入。
同时无条件的插入多个表:
insert all 
into t1
into t2
...
values(...);
同时插入符合条件的多个表,每一条记录会插入所有符合条件的表:
insert all  www.2cto.com    
when condition1 then
into t1
when condition2 then
into t2
...
[  else
into tn]
values(...);
同时插入符合条件的一个表,每一条记录会插入到符合条件的第一个表:
insert all  
when condition1 then
into t1  www.2cto.com  
when condition2 then
into t2
...
[  else
into tn]
values(...);
如果没有符合条件,有没有else子句,那么忽略该记录。

oracle中update,insert,delete的高级用法相关推荐

  1. SQL server触发器中 update insert delete 分别给写个例子被。

    SQL server触发器中 update insert delete 分别给写个例子以及解释下例子的作用和意思被, 万分感谢!!!! 主要想知道下各个语句的书写规范. INSERT: 表1 (ID, ...

  2. oracle12c order by,oracle 数据库中order by 的一些高级用法

    oracle数据库中order by用法 oracle数据库中order by的一些高级用法 现有一个表,表内容如下: 以下的操作都是对该表进行的操作 1.按照名称排序(默认为升序) 实现代码: se ...

  3. oracle 数据库中order by 的一些高级用法

    oracle数据库中order by用法 oracle数据库中order by的一些高级用法 现有一个表,表内容如下: 以下的操作都是对该表进行的操作 1.按照名称排序(默认为升序) 实现代码: se ...

  4. oracle中nowait怎么用,oracle中UPDATE nowait 的使用方法介绍

    oracle中UPDATE nowait 的使用方法介绍 1.UPDATE nowait 应用以下场景:查询某条数据,并对其开启数据库事务.如果查询的当前数据没有加锁,则正确返回结果,并对当前数据加锁 ...

  5. oracle中的exists 和 not exists 用法详解

    from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...

  6. oracle中drop、delete和truncate的区别

    oracle中drop.delete和truncate的区别 oracle中可以使用drop.delete和truncate三个命令来删除数据库中的表,网上有许多文章和教程专门讲解了它们之间的异同,我 ...

  7. Oracle中的insert/insert all/insert first

    Oracle中的insert/insert all/insert first 1.概念 Oracle 中insert all 是指把 同一批 数据插入到 不同的表 中. 假如,现在有个需求,把表 t ...

  8. Oracle中TRUNCATE、DELETE和DROP的区别?

    Oracle中TRUNCATE.DELETE和DROP的区别? 区别: 1.删除表时表数据方面 delete是每次从表中删除一行,同时将删除操作作为事务写进日志以便回滚操作,在有该操作的触发器时,执行 ...

  9. 1.oracle中的exists 和not exists 用法:

    1.oracle中的exists 和not exists 用法: exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 ...

最新文章

  1. 微软语音扩展全球语言支持,发布160个新声音
  2. 网站性能优化之yahoo军规
  3. Laravel 5.0 的新特性
  4. mac上安装zookeeper教程
  5. sqlserver 如何把一列分为一行显示_SqlServer数据库如何快速修改表的一列值
  6. 程序员加班到半夜忘记关灯,隔天上班看到罚款金额懵了
  7. aws s3 獲取所有文件_前端上传文件到Aws S3文件服务器
  8. VUE axios发送cookie
  9. linux ssh客户端乱码,Win10专业版下Open ssh客户端乱码咋办?
  10. JavaScript——语法
  11. 由《资深架构师带你玩转框架封装》课程——我的实践
  12. 1.封包(二)(雷电模拟器+ProxyDroid+CCProxy+WPE) 的使用
  13. EDA软件_AD14绘制等长线
  14. 微博android4.1.2,Fuubo微博(新浪微博第三方客户端)app
  15. 会声会影编辑html,用会声会影剪辑视频快速入门技巧
  16. HHL算法的QISKit实现
  17. 简单几步即可速查电脑WiFi密码,无需任何工具!
  18. selenium模拟刷百度流量源码
  19. 待过猫厂、狗厂、鹅厂、猪厂的10年测试码农告诉你-测试计划与测试方案的区别?
  20. 惠普HP Laser MFP 136a 打印机驱动

热门文章

  1. 微信开发工具报错:UNKNOWN ERROR:tunneling socket could not be established,cause=getaddrinfo ENOTFOUND socks
  2. oppo手机android通知关闭,oppo手机怎么关闭系统升级提醒?OPPO关闭系统升级提醒的方法...
  3. 汽车免费WiFi的原理是什么?
  4. 语音信号处理频域语谱图matlab实验,语音信号的频域分析
  5. Python下载网易云音乐(云音乐飙升榜)
  6. was连接oracle rac集群,oracle 11g rac 集群操作命令
  7. Linux内核配置选项详解
  8. ASM和AAM的一些代码资源
  9. 20-HTML与HTML5常用标签(前端)
  10. PostgreSQL 分区表教程