Oracle insert的扩展

一个表发散弹枪: ⑴ insert into table_name [(column[,column…])] select_statement 每次只能插入一个表,但性能上比写多条insert语句要高。另外,Oracle还提供create table table_name as select …,as不可少!实现直接创建并且插入表,依赖于后面的s

向一个表发散弹枪:
⑴ insert into table_name [(column[,column…])] select_statement
每次只能插入一个表,但性能上比写多条insert语句要高。另外,Oracle还提供create table table_name as select …,as不可少!实现直接创建并且插入表,依赖于后面的select语句的结果,如:create table new_table as select * from source_table where 1=0

案例:
表mxt新增一列time,那么这个列会被置在最后,现想把此列放于第2
create table copy_mxt as select id,time,name from mxt;
drop table mxt;
rname copy_mxt to mxt;

向多个表发散弹枪:

类型:
            ① 无条件的insert
            ② 带条件的insert all
            ③ 带条件的insert first
            ④ pivoting insert

多表insert的使用限制:
            ① 只能对table使用insert,不能对视图或物化视图使用
            ② 不能对远程表使用这个插入操作
            ③ 多表插入时,不能指定一个表的集操作
            ④ 多表insert的into的目标表加在一起的列数不能超过999

㈠ 无条件的insert
             语法:
             insert all
             into dest_table1 [column(,column…)] [values (…)]
             into dest_table2 [column(,column…)] [values (…)]
             …
             select_statement  –values中指定是select结果列,如果没有values指定列,那么表示目标表的列类型和顺序与select语句查询的结果完全一致。建议不要省略目标表中的列和values,增强可读性。

例子:

1.create table emp_1 as select employee_id,last_name from employees where 1=0;  
2.create table emp_2 as select * from employees where 1=0;  
3.create table emp_3 as select * from employees where 1=0;  
4.insert all  
5.–不指定emp_1后面的列,也没有values指定列,那么emp_1所有列类型和顺序与查询的列的类型和顺序一致   
6.–也就是emp_1中只有查询结果中的那几列,而且类型和顺序一致   
7.  into emp_1  
8.–指定了emp_2后面的列,但没有values指定列,表示emp_2中要插入的列被选择出来,与查询结果列的类型和顺序一致   
9.–emp_2也有很多列,不止这两列   
10.  into emp_2(employee_id,last_name)  
11.–指定emp_3后面的列和values指定列,那么values后面的列名必须与查询结果一致,如果查询有别名,必须在values中使用别名   
12.–emp_3指定的列的类型和顺序必须与values保持一致   
13.–emp_3也可能列数大于指定列数   
14.  into emp_3(employee_id,last_name) values(e_id,e_last_name)  
15.  select employee_id e_id,last_name e_last_name   
16.   from employees 
语法:
             insert all
             when condition_statement
             then into dest_table1[指定列] values[查询中的列]
             when condition_statement
             then into dest_table2[指定列] values[查询中的列]
             select_statement
             注释:带条件的insert all与insert first的区别在于只按条件对查询的结果进行刷选,不会考虑前面已经匹配过的记录,每次都是全量匹配,而insert first对已经匹配过的记录不予考虑,下一个when会自动过滤掉上一个匹配过的行记录
             例子:
1.insert all 
2.  –将查询结果s_id>20的插入,条件中指定的列必须与查询结果名字一致,如果有别名,请用别名   3.  when e_id>20  4.    then into emp_1  5.  –s_last_name为M开头的插入,可能插入的行与s_id有重复   6.  when e_last_name like ‘M%’  7.    then into emp_2(employee_id,last_name)  8.  –如果指定else,则不满足上面条件的插入到emp_3,插入的行不会与上面两个重复   9.  else  10.    into emp_3(employee_id,last_name) values(e_id,e_last_name)  11.  select employee_id e_id,last_name e_last_name  12.    from employees

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/463455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 04:23:51
下一篇 2025年11月8日 04:25:32

相关推荐

  • Oracle DATE 类型存储时间戳及如何仅存储日期

    本文旨在解释 Oracle 数据库中 DATE 类型总是包含时间戳的原因,并提供在数据库中存储日期时去除时间部分的方法,重点介绍如何通过格式化函数控制日期显示,而非修改数据库结构。 在 Oracle 数据库中,DATE 类型的设计初衷就是同时存储日期和时间信息。即使你只关心日期部分,DATE 类型仍…

    2025年12月6日 java
    000
  • mysql中事务隔离级别有哪些

    读未提交允许读取未提交数据,易引发脏读、不可重复读和幻读;2. 读已提交确保读取已提交数据,避免脏读但存在不可重复读和幻读;3. 可重复读保证事务内多次读取一致,MySQL默认级别,通过MVCC和间隙锁减少幻读;4. 串行化强制事务串行执行,避免所有并发问题但性能最差。选择隔离级别需权衡一致性与性能…

    2025年12月6日 数据库
    000
  • 优化MySQL电话号码字段搜索:解决空格与格式多样性问题

    本文详细介绍了在mysql数据库中,如何高效地搜索包含空格或多种格式的电话号码字段。针对`like`查询无法识别空格字符的问题,核心解决方案是利用`replace`函数在查询时移除字段中的空格,从而实现准确匹配。教程还将探讨更全面的数据清洗策略和性能优化建议,以提升搜索效率和数据质量。 在数据库管理…

    2025年12月6日 后端开发
    000
  • OpenJPA 在 Oracle 中处理字符串长度限制的警告与解决方案

    本文深入探讨了 openjpa 在与 oracle 数据库交互时,针对字符串字段可能遇到的“值超过 4000 字节/字符”的警告信息。该警告源于 oracle `varchar2` 数据类型的默认 4000 字节限制。教程将详细介绍两种主要的解决方案:通过 `@column(length = n)`…

    2025年12月6日 java
    000
  • Java中MANIFEST.MF的作用 详解清单文件

    manifest.mf是java中jar文件的元数据配置文件,位于meta-inf目录下,用于定义版本、主类、依赖路径等关键信息。1. 它允许指定入口类,使jar可直接运行;2. 通过class-path管理依赖,减少类加载冲突;3. 可配置安全权限,如设置沙箱运行;4. 常见属性包括manifes…

    2025年12月5日 java
    000
  • Java中枚举类型怎么定义 掌握Java枚举的定义和常用方法

    java中定义枚举类型使用enum关键字,例如public enum weekday { monday, tuesday,…};枚举可包含字段和方法,如添加中文名称字段及获取方法;可在switch语句中使用,确保覆盖所有值;常用方法包括values()、valueof()、ordinal…

    2025年12月4日 java
    000
  • 华为p40pro中设置动态壁纸的方法介绍

    遇到手机屏幕设置动态壁纸的问题?不要担心!%ignore_a_1%小编小新为大家带来了华为p40pro中设置动态壁纸的详细教程。本文将逐步指导你完成整个过程,让你轻松拥有个性十足的动态壁纸,尽情享受视觉盛宴。 1、首先我们打开华为手机桌面,点击设置。 2、点击桌面和壁纸。 3、选择壁纸。 4、点击更…

    2025年12月4日 手机教程
    000
  • 取消电脑开机密码的方法

    在日常使用电脑时,许多人会选择为电脑设置一个开机密码以增强安全性。然而,也有不少人出于各种原因,比如忘记密码或不再需要密码保护,希望取消之前的开机密码设置。如果你正为此困扰,不妨按照以下步骤操作,轻松取消电脑的开机密码。 首先,点击屏幕左下角的开始菜单,然后从弹出的选项中找到并打开“控制面板”。 接…

    2025年12月4日 系统教程
    000
  • oracle/mysql拼接值遇到的坑及双竖线||和concat怎么使用

    %ign%ignore_a_1%re_a_1% mysql 拼接值遇到的坑 双竖线 || concat || “||” 在oracle中是拼接值,但在mysql中是“或”的意思。 where name like ‘%’ || ‘Tony’ || ‘%’ 所以推荐使用concat() concat()…

    数据库 2025年12月4日
    000
  • 荣耀9x中设置铃声的简单操作教程

    您是否厌倦了单调乏味的铃声,渴望为您的荣耀9x注入个性?php小编西瓜为您带来一步步指南式教程,让您轻松设置自定义铃声,让您的手机与众不同。继续阅读本文,了解如何查找您喜爱的歌曲、将其转换成铃声格式,并将其应用到您的设备上。 1.首先进入设置,找到声音 2.点击来电铃声,在这里选择卡一或卡二的来电铃…

    2025年12月4日
    200
  • EXCEL中轻松绘制鱼骨图

    1、打%ignore_a_1%Excel,首先插入一个矩形形状,作为鱼骨图的主绘图区域。 2、在画布上分别绘制两个矩形框,左边的标记为“产生原因”,右边的标注为“泄漏原因”。 3、在中间位置插入一个小矩形,用于填写需要分析的问题或导致的不良结果。 4、进入左侧“产生原因”区域,绘制四个并列的小格子,…

    2025年12月4日 软件教程
    000
  • Linux实现自动挂载autofs的方法详解

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 目录 实现自动挂载-autofs autofs工具简单使用 autofs配置详细说明 自动挂载资源有两种格式 优化Linux系统性能 安装Tuned 选择调整配置文件 检查系统推荐的调整配置文件…

    2025年12月4日
    000
  • 华为手机中粘贴板的方法教程

    大家在使用华为手机的时候,有没有遇到过这样的问题:复制了一段文字,但是想粘贴的时候却找不到了?别着急,php小编小新为大家带来华为手机粘贴板的使用教程,让你轻松解决粘贴难题。下面就让我们一起了解一下吧! 1、首先我们打开一个聊天框 2、长按文字点击复制。 3、再找到编辑框 4、点击一下。 5、点击粘…

    2025年12月4日
    000
  • 简易项目搭建(用于一般杂七杂八的小功能点)

    在工作中,我们常常会遇到许多需要完成的小功能点。以我自己的工作情况为例,最常见的是两个方面:1、控制台项目;2、web界面(纯前端)。 首先让我们讨论控制台项目的工作内容。在没有使用PostMan之前,工作中大量使用接口调用。在项目准备阶段,首先需要对接口的使用进行描述。在主要使用WebServic…

    2025年12月4日
    000
  • 华为手机怎么进行滚动截屏_华为手机截长图方法教程

    华为手机滚动截屏问题如果你想知道华为手机怎么截取长图,本文将为你提供详细的步骤指南。随着手机屏幕越做越大,我们需要截取的页面内容也越来越多,使用传统的截屏方式只能分段截取,不便于分享和保存。华为手机支持滚动截屏功能,可以一次性完整截取长网页或聊天记录等内容,操作简单易懂。继续阅读本文,了解华为手机滚…

    2025年12月4日 手机教程
    000
  • 分页功能如何实现?LIMIT与页码计算

    分页功能通过offset和limit截取数据实现。1.分页核心是计算偏移量(offset=(页码-1)每页条数)和限制数量;2.使用sql的limit子句或数据库特定语法(如sql server的offset…fetch next)执行查询;3.前端传页码和每页大小,后端计算偏移量并执行…

    2025年12月3日 后端开发
    000
  • Java中DAO模式的作用 解析DAO模式封装数据访问的价值

    dao模式通过解耦业务逻辑与数据访问,解决了数据库切换困难、sql注入风险和代码重复问题。其核心价值在于将数据访问细节封装在接口和实现类中,使业务代码仅面向接口编程,从而降低维护成本。具体步骤包括:1.定义dao接口;2.创建具体实现类;3.使用工厂模式获取实例;4.在业务逻辑中调用dao方法。技术…

    2025年12月3日 java
    000
  • Swoole如何做数据加密?加密算法如何选择?

    Swoole中数据加密依赖PHP的OpenSSL扩展,通过选择AES、RSA等算法实现;在Server或Client的接收与发送过程中进行加解密操作,结合CBC、GCM等模式保障安全与性能;密钥应通过环境变量或配置文件管理,避免硬编码;为防止中间人攻击,应启用TLS/SSL加密通信,并在WebSoc…

    2025年12月3日
    100
  • Swoole如何实现多租户?租户隔离怎么操作?

    Swoole实现多租户的核心在于协程上下文隔离,通过Coroutine::getContext()绑定租户ID、数据库连接、缓存前缀等上下文信息,在请求入口识别租户并加载配置,确保数据、缓存、文件存储、数据库连接等资源按租户隔离,避免长驻内存导致的数据泄露,结合连接池重置、缓存键前缀、独立表或库等策…

    2025年12月3日
    000
  • 荣耀play中更换主题的基本操作

    更换手机主题时遇到问题? 无需担心,%ignore_a_1%小编百草为您提供了一份简单易懂的指南。本指南将逐步介绍荣耀play中更换主题的基本操作。从选择主题到应用主题,每一步都详细说明,让您轻松更改手机外观。请继续阅读,获取更换主题的完整指南。 1、点击主题,选择一个主题。 2、选择完毕之后,点击…

    2025年12月3日
    000

发表回复

登录后才能评论
关注微信