oracle中insert all的用法

news2024/12/26 14:09:10

1、简述

使用insert into语句进行表数据行的插入,但是oracle中有一个更好的实现方式:使用insert all语句。

insert all语句是oracle中用于批量写数据的 。insert all分又为

  1. 无判断条件插入
  2. 有判断条件插入
  3. 有判断条件插入分为
  • Insert all when... 子句

  • insert first when... 子句

2、表和数据准备

--创建表
sqlplus hr/hr@192.168.0.207:1521/PROD01PDB
CREATE TABLE t_students(
   ID   NUMBER(4) primary key,
   NAME VARCHAR2(32),
   sex  VARCHAR2(3)
);
 
--删除表
drop table t_students;
drop table t_students_01;
drop table st_student_02;
 
--向t_students表中插入数据
INSERT INTO t_students(ID, NAME, sex) VALUES(881001, '成都', '女');
INSERT INTO t_students(ID, NAME, sex) VALUES(881002, '深圳', '男');
INSERT INTO t_students(ID, NAME, sex) VALUES(881003, '上海', '女');
commit;
 
HR@192.168.0.207:1521/PROD01PDB> col NAME format a20
HR@192.168.0.207:1521/PROD01PDB> select * from t_students;
        ID   NAME                 SEX
---------- -------------------- ---------
    881001   成都                 女
    881002   深圳                 男
    881003   上海                 女

--复制表结构创建表t_students_01,t_students_02
CREATE TABLE t_students_01 AS SELECT * FROM t_students WHERE 1 = 2;
CREATE TABLE t_students_02 AS SELECT * FROM t_students WHERE 1 = 2;

--查询表
select * from t_students;
select * from t_students_01;
select * from t_students_02;

3、insert all无判断条件插入

将t_students表中的数据插入t_students_01,t_students_02表中可以这样写

insert all
  into t_students_01 values(id,name,sex)
  into t_students_02 values(id,name,sex)
select id,name,sex from t_students;

4、insert all有判断条件插入

有判断条件插入又分为两种:insert all when... 子句和insert first when... 子句

-- insert t_students
INSERT INTO t_students(ID, NAME, sex) VALUES(1004, '广州', '女');
INSERT INTO t_students(ID, NAME, sex) VALUES(1005, '苏州', '男');
commit;

-- insert first
insert first 
  when id>=1004 then
  into t_students_01 values(id,name,sex)
  when id=1005 then
  into t_students_02 values(id,name,sex)
select id,name,sex from t_students;
commit;

-- insert all
insert all 
  when id>=1004 then
  into t_students_01 values(id,name,sex)
  when id=1005 then
  into t_students_02 values(id,name,sex)
select id,name,sex from t_students;
commit;

5、insert all 、insert first 子句的区别

insert first是依据是否满足判断条件来确定先后关系的,当数据满足第一个when判断条件又满足第二个when判断条件,则执行第一个then插入语句,第二个then就不插入。

反之有数据不满足第一个when判断条件且满足第二个when判断条件,则数据会插入第二个条件下对应的表中,这也正是insert first与inset all的区别。

insert all    只要满足条件,就会插入,这个会造成重复插入;

insert first 只要有一个满足条件,后面的条件不再判断,不会造成重复插入。

注意:insert all 不支持序列插入,会导致两边不一致

6、Oracle19c OCP 考试点题目

自己在HR schmea下

select employee_id  emp_id,manger_id MGR,salary SAL from EMPLOYEES;

create table special_sal 
as 
select employee_id  emp_id,salary SAL 
from HR.EMPLOYEES 
where 1=0;

CREATE table sal_history as select employee_id  emp_id,hire_date hiredate,salary SAL 
from EMPLOYEES 
where 1=0;

CREATE table mgr_history as select employee_id  emp_id,manager_id MGR,salary SAL 
from EMPLOYEES 
where 1=0;

insert all 
when SAL > 20000 then
    into special_sal VALUES(emp_id,SAL)
else 
    into sal_history VALUES(emp_id,hiredate,sal) 
    into mgr_history values(emp_id,mgr,sal)
select employee_id  emp_id,hire_date hiredate,salary SAL,manager_id MGR
from EMPLOYEES 
where EMPLOYEE_ID<125;

HR@192.168.0.207:1521/PROD01PDB> select * from special_sal;

    EMP_ID        SAL
---------- ----------
       100      24000

HR@192.168.0.207:1521/PROD01PDB> select * from sal_history;

    EMP_ID HIREDATE                   SAL
---------- ------------------- ----------
       101 2005-09-21 00:00:00      17000
       102 2001-01-13 00:00:00      17000
       103 2006-01-03 00:00:00       9000
       104 2007-05-21 00:00:00       6000
       105 2005-06-25 00:00:00       4800
       106 2006-02-05 00:00:00       4800
       107 2007-02-07 00:00:00       4200
       108 2002-08-17 00:00:00      12008
       109 2002-08-16 00:00:00       9000
       110 2005-09-28 00:00:00       8200
       111 2005-09-30 00:00:00       7700

    EMP_ID HIREDATE                   SAL
---------- ------------------- ----------
       112 2006-03-07 00:00:00       7800
       113 2007-12-07 00:00:00       6900
       114 2002-12-07 00:00:00      11000
       115 2003-05-18 00:00:00       3100
       116 2005-12-24 00:00:00       2900
       117 2005-07-24 00:00:00       2800
       118 2006-11-15 00:00:00       2600
       119 2007-08-10 00:00:00       2500
       120 2004-07-18 00:00:00       8000
       121 2005-04-10 00:00:00       8200
       122 2003-05-01 00:00:00       7900

    EMP_ID HIREDATE                   SAL
---------- ------------------- ----------
       123 2005-10-10 00:00:00       6500
       124 2007-11-16 00:00:00       5800

24 rows selected.

HR@192.168.0.207:1521/PROD01PDB> select * from mgr_history;

    EMP_ID        MGR        SAL
---------- ---------- ----------
       101        100      17000
       102        100      17000
       103        102       9000
       104        103       6000
       105        103       4800
       106        103       4800
       107        103       4200
       108        101      12008
       109        108       9000
       110        108       8200
       111        108       7700

    EMP_ID        MGR        SAL
---------- ---------- ----------
       112        108       7800
       113        108       6900
       114        100      11000
       115        114       3100
       116        114       2900
       117        114       2800
       118        114       2600
       119        114       2500
       120        100       8000
       121        100       8200
       122        100       7900

    EMP_ID        MGR        SAL
---------- ---------- ----------
       123        100       6500
       124        100       5800

24 rows selected.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1684625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMware 和 VirtualBox开机自启指定虚拟机详细教程

VMware上虚拟机随宿主机开机自启 1. 设置自动启动虚拟机 网上教程旧版的&#xff0c;界面和新版有所差异。17版本设置如下&#xff1a;VMware Workstation工作台 -> 文件 -> 配置自动启动虚拟机 -> 按顺序选择需要启动的虚拟机 VMWare17配置自动启动虚拟机提示&…

使用WindTerm通过公钥让其他同事登录linux服务器

1.其他同事电脑操作cmd输入 ssh-keygen,如果是第一次生成公钥&#xff0c;则直接一路回车确认就行 会生成在C:\Users\nideNAME\.ssh目录 公钥文件名为id_rsa.pub&#xff0c;私钥文件名为id_rsa。 2.你的电脑你已经连接上服务器了 在root下新建目录 root/.ssh/新建文件touck …

数据库小项目——叮叮移动业务大厅(三层架构+MySQL数据库)

源码已上传至资源 该项目主要使用技术为MySQL数据库&#xff0c;其中也包含了一些对于文件的写入和读取操作。项目结构采用三层架构&#xff0c;后端的业务逻辑清晰明了。 1.项目结构 项目采用控制台版&#xff0c;前端业务在java包下&#xff0c;每个业务单独成块。若想要GUI…

GD32F307+lwip+freeRTOS+DP83848 JPerf接收测速

1.原理图 2.代码 https://www.firebbs.cn/forum.php?modviewthread&tid26274&fromuid37393 //22_ENET 1&#xff09;注释掉tcp_client_init(); 2&#xff09;init_task中添加测速线程iperf_server_init() //main.c #include "gd32f30x.h" #include &quo…

自定义RedisTemplate序列化器

大纲 RedisSerializerFastJsonRedisSerializer自定义二进制序列化器总结代码 在《RedisTemplate保存二进制数据的方法》一文中&#xff0c;我们将Java对象通过《使用java.io库序列化Java对象》中介绍的方法转换为二进制数组&#xff0c;然后保存到Redis中。实际可以通过定制Red…

QTextCodec NO such file or directory让qt6兼容qt5

首先在.pro 文件中新加 QT core5compat这时会报错 链接 报错之后修复qt&#xff0c;新加兼容模块&#xff0c;见链接。

C++实现基于http协议的epoll非阻塞模型的web服务器框架(支持访问服务器目录下文件的解析)

使用方法&#xff1a; 编译 例子&#xff1a;./httpserver 9999 ../ htmltest/ 可执行文件 端口 要访问的目录下的 例子&#xff1a;http://192.168.88.130:9999/luffy.html 前提概要 http协议 &#xff1a;应用层协议&#xff0c;用于网络通信&#xff0c;封装要传输的数据&…

LeetCode 79.单词搜索

原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内…

本地centos7+docker+ollama+gpu部署

1、一台有 NVIDIA GPU 驱动的机器 2、Docker CE安装 # 删除旧版本的 Docker&#xff08;如果存在&#xff09; sudo yum remove -y docker docker-common docker-selinux docker-engine # 安装必要的软件包&#xff1a; sudo yum install -y yum-utils device-mapper-persiste…

PyCharm设置——用于调试虚拟环境中的django程序

使用Pycharm新建了一个项目。 项目目录&#xff1a;C:\Users\grace\PycharmProjects\learning_log 在该路径下安装虚拟环境ll_env&#xff0c;并在虚拟环境下安装Django。 为了调试该Django需要对PyCharm进行设置。 1、确保PyCharm使用正确的虚拟环境 打开PyCharm&#xff…

市面上前 11 名的 Android 数据恢复软件

Android数据恢复软件是恢复无意中删除的文件或文件夹的必要工具。该软件还将帮助您恢复丢失或损坏的信息。本文介绍提供数据备份和磁盘克隆选项的程序&#xff0c;这些选项有助于在Android设备上恢复文件的过程。 如果您正在寻找一种有效的方法来恢复图像&#xff0c;文档&…

qmt量化交易策略小白学习笔记第8期【qmt编程之获取股票资金流向数据--内置Python】

qmt编程之获取股票资金流向数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;需免费开通量化回测与咨询实盘权限&#xff0c;可以和博主联系&#xff01; 获取股票资金…

java学习四

Random 随机数 数组 静态初始化数组 数组在计算机中的基本原理 数组的访问 什么是遍历 数组的动态初始化 动态初始化数组元素默认值规则 Java内存分配介绍 数组在计算机中的执行原理 使用数组时常见的一个问题 案例求数组元素最大值 public class Test1 {public static void ma…

面试八股之MySQL篇5——主从同步原理篇

&#x1f308;hello&#xff0c;你好鸭&#xff0c;我是Ethan&#xff0c;一名不断学习的码农&#xff0c;很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 &#x1f3c3;人生之义&#xff0c;在于追求&#xff0c;不在成败&#xff0c;勤通…

Qt学习记录(14)线程

前言&#xff1a; 我的臀部已经翘到可以顶起一屁股债了 为什么要使用线程 什么时候用线程 复杂的数据处理 头文件.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer>//定时器头文件QT_BEGIN_NAMESPACE namespace Ui { class Widget; }…

表现层框架设计之表现层设计模式_3.MVVM模式

1.MVVM模式 MVVM模式正是为解决MVP中UI种类变多&#xff0c;接口也会不断增加的问题而提出的。 MVVM模式全称是模型-视图-视图模型&#xff08;Model-View-ViewModel&#xff09;&#xff0c;它和MVC、MVP类似&#xff0c;主要目的都是为了实现视图和模型的分离&#xff0c;不…

Mac网线连接windows本【局域网互传文件】

Mac网线连接windows本【局域网互传文件】 两台电脑网线互联 Mac->网络->USP TCP/IP 手动配置IP&#xff0c;子网掩码&#xff0c;路由器 windows 网络和Internet配置->更改适配器选项->以太网->Internet协议版本4&#xff08;TCP/IPv4&#xff09;->属性 …

概率论统计——大数定律

大数定律 弱大数定律&#xff08;辛钦大数定律&#xff09; 利用切比雪夫不等式&#xff0c;证明弱大数定律 应用 伯努利大数定理&#xff0c;&#xff08;辛钦大数定理的推论&#xff09; 证明伯努利大数定理 注意&#xff1a;这里将二项分布转化成0,1分布来表示&#xff0c;…

跨境小白shopee被封号的原因?如何有效预防?

提到跨境电商平台&#xff0c;大家都知道亚马逊、Temu、TikTok shop这些是比较大的电商平台。但最近几年&#xff0c;在东南亚市场上&#xff0c;Shopee虾皮却是颇负盛名的一个跨境电商平台&#xff0c;这也让众多中国跨境小白蜂拥而至。目前shopee的商家正在不断增多&#xff…

奥威BI软件能做金蝶ERP以外的数据分析吗?

奥威BI软件能够进行金蝶ERP以外的数据分析。除了金蝶ERP外&#xff0c;奥威BI软件还可以对接用友等主流ERP&#xff1b;支持MS SQL、Oracle、Mysql等主流的关系型数据库&#xff0c;这允许用户直接从这些数据库中导入和分析数据&#xff1b;可以直接上传Excel文件作为数据源。 …