insert all(在Oracle中,通过一个INSERT ALL语句批量插入数据)
本文目录
- 在Oracle中,通过一个INSERT ALL语句批量插入数据
- insert 和insert all的区别
- oracle存储过程 循环判断插入 急!!!!!!!!
- 用insert 语句同时插入俩个表
- oracle insert into 脚本怎么写
- oracle的多表插入
- oracle MERGE into跟insert all有什么区别
- **L中的insert all怎么用
在Oracle中,通过一个INSERT ALL语句批量插入数据
Oracle:
INSERT ALL
INTO A(field_1,field_2) VALUES (value_1,value_2)
INTO A(field_1,field_2) VALUES (value_3,value_4)
INTO A(field_1,field_2) VALUES (value_5,value_6)
SELECT 1 FROM DUAL;
在Mybatis中使用
《insert id="insertData" parameterType="*****"
useGeneratedKeys="false"》
INSERT ALL
《foreach item="item" index="index" collection="list"》
INTO T_GZL_BZ
(
ID,
JGH,
JGMC,
DW,
JGLX,
BZLB,
JGZWLB,
EDGZL,
ZGGZL,
BZ,
**RBH,
**RXM,
**SJ,
SFSZ
) VALUES
(
#{*****,jdbcType=VARCHAR},
#{*****,jdbcType=VARCHAR},
#{*****,jdbcType=VARCHAR},
#{*****,jdbcType=VARCHAR},
#{*****,jdbcType=VARCHAR},
#{*****,jdbcType=VARCHAR},
#{*****,jdbcType=VARCHAR},
#{*****,jdbcType=NUMERIC},
#{*****,jdbcType=NUMERIC},
#{*****,jdbcType=VARCHAR},
#{*****,jdbcType=VARCHAR},
#{*****,jdbcType=VARCHAR},
#{*****,jdbcType=DATE},
#{*****,jdbcType=VARCHAR}
)
《/foreach》
SELECT 1 FROM DUAL
《/insert》
mapper:
/**
* @param createList
* @return
*/
int insertData(@Param("list") List《WorkloadStandardDto》 createList);
insert 和insert all的区别
insert into 表X select......
一般使用在X的字段和后面select查询出来的结果集字段一样多,并且在数据库中X表字段的顺序、类型和结果集一致
如:X表(id,name,age)
那么select语句最好写成
select id,name,age form XXXX where .....;
如果字段名不一样,可以使用别名;
如:XXXX(sid,sname,sage)
insert into 表X select sid id ,sname name,sage age form XXXX where .....;
最好自己建2张表多练习练习,自己也容易记住
oracle存储过程 循环判断插入 急!!!!!!!!
不需要两个游标。
把查出来的内容 放到一起,吧type 放到一起, 平且排序
然后再根据type 依次插入,游标中,进行if逻辑判断就可以了。
用insert 语句同时插入俩个表
INSERT
插入多个表中
在以前的版本中,如果想插入多个表中,需要使用多条INSERT语句,9I开始可以用一条INSERT语句实现向多个表中插入数据.
INSERT
(subquery)
其中conditional_insert_clause如下:
上面的语法说明其实包含了两种情况
》无条件
》有条件,所以后面的conditional_insert_clasue里出现的是分属两种情形下的
举例就很容易理解了
无条件INSERT ALL
INSERT ALL
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
INTO mgr_history VALUES(EMPID,MGR,SAL)
SELECT employee_id EMPID,hire_date HIREDATE,salary SAL,manager_id MGR
FROM employees
WHERE employee_id》200;
因为没有附加限制于检索出的记录,所以所有检索返回数据讲根据其列名插入相应的表中.
有条件的INSERT ALL
INSERT ALL
WHEN SAL》10000 THEN
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
WHEN MGR》200 THEN
INTO mgr_history VALUES(EMPID,MGR,SAL)
SELECT employee_id EMPID,hire_date HIREDATE,salary SAL,manager_id MGR
FROM employees
WHERE employee_id》200;
这里就将比较了,返回记录将比较其SAL,如果大于10000则插入SAL_HISTORY,同理,MGR大于200的记录将插入MGR_HISTORY表.其余都将丢弃.
有条件的FIRST INSERT
FIRST与ALL的区别在于当遇到第一个求值为TRUE的子句之后停止对WHEN子句求值,而ALL不论是否求值为TRUE.
INSERT FIRST
WHEN SAL》25000 THEN
INTO special_sal VALUES(DEPTID,SAL)
WHEN HIREDATE like (’%00%’) THEN
INTO hiredate_history_00 VALUES(DEPTID,HIREDATE)
WHEN HIREDATE like (’%99%’) THEN
INTO hiredate_history_99 VALUES(DEPTID,HIREDATE)
ELSE
INTO hiredate_history VALUES(DEPTID,HIREDATE)
SELECT department_id DEPTID,SUM(salary) SAL,
MAX(hire_date) HIREDATE
FROM employees
GROUP BY department_id;
上例中如果第一个WHEN子句求值为TRUE则其后的WHEN子句将不会被执行,反之将直到遇到第一个满足条件的子句执行为止.
oracle insert into 脚本怎么写
INSERT INTO BOOK(bookid,name,price) VALUES(’100123’,’oracle ’,54);
或者
INSERT INTO tablename(bookid,name,price)
SELECT ’100123’,’oracle,54 FROM DUAL;
总结下Oracle 中的Insert用法
1.标准Insert --单表单行插入
语法:
INSERT INTO table VALUE (value1,value2,...)
例子:
insert into dep (dep_id,dep_name) values(1,’技术部’);
2, 无条件 Insert all --多表多行插入
语法:
INSERT
(subquery)
示例:
INSERT ALL
INTO sal_history(emp_id,hire_date,salary) values (empid,hiredate,sal)
INTO mgr_history(emp_id,manager_id,salary) values (empid,hiredate,sal)
SELECT employee_id empid,hire_date hiredate,salary sal,manager_id mgr
FROM employees
WHERE employee_id》200;
3,有条件的Insert
语法:
INSERT
WHEN condition THEN insert_into_clause values_clause
......
Subquery;
示例:
Insert All
when id》5 then into z_test1(id, name) values(id,name)
when id《》2 then into z_test2(id) values(id)
else into z_test3 values(name)
select id,name from z_test;
4, 旋转Insert (pivoting insert)
create table sales_source_data (
employee_id number(6),
week_id number(2),
sales_mon number(8,2),
sales_tue number(8,2),
sales_wed number(8,2),
sales_thur number(8,2),
sales_fri number(8,2)
);
insert into sales_source_data values (176,6,2000,3000,4000,5000,6000);
create table sales_info (
employee_id number(6),
week number(2),
sales number(8,2)
);
示例如下:
insert all
into sales_info values(employee_id,week_id,sales_mon)
into sales_info values(employee_id,week_id,sales_tue)
into sales_info values(employee_id,week_id,sales_wed)
into sales_info values(employee_id,week_id,sales_thur)
into sales_info values(employee_id,week_id,sales_fri)
select employee_id,week_id,sales_mon,sales_tue,
sales_wed,sales_thur,sales_fri
from sales_source_data;
oracle的多表插入
在业务处理过程中 经常会碰到将业务数据按照条件分别插入不同的数据表的问题 按照传统的处理方式 需要分条件执行多次检索后分别插入不同的表单 这样因为执行了重复的检索造成cpu和内存的浪费 从oracle i开始引入了insert all关键字支持将某张表的数据同时插入多张表单 语法如下
Insert all Insert_into_clause subquery;
Insert conditional_insert_clause subquery;
如上所示 insert_into_clause用于指定insert子句 value clause用于指定值子句 subquery用于指定提供数据的子查询 condition_insert_clause用于指定insert条件子句
当使用all操作符执行多表插入时 在每个条件子句上都要执行into子句后的子查询 并且条件中使用的列必须在插入和子查询的结果集中
创建测试用表
createtable tdate(
idvarchar ( )
namevarchar ( )
birthday datedefaultsysdate
);
插入数据
insertinto tdate values( zhangsan to_date( YYYY MM DD ));
insertinto tdate values( zhangsan to_date( YYYY MM DD ));
insertinto tdate values( lisi to_date( YYYY MM DD ));
insertinto tdate values( wangwu default);
insertinto tdate(id name) values( zhangsan );
mit;
创建接收用测试表
createtable tdate asselect * from tdate where = ;
createtable tdate asselect * from tdate where = ;
mit;
使用all关键字执行多表插入操作
insertall
when birthday 》 月 theninto tdate
when birthday 《 月 theninto tdate
whenname = zhangsan theninto tdate
whenname = lisi theninto tdate
select * from tdate;
在上述操作语句中 如果原表tdate中存在既满足birthday 》 月 又满足name = zhangsan 的数据 那么将执行两次插入 而使用first关键字就可以避免这个问题 使用first关键字时 如果有记录已经满足先前条件 并且已经 *** 入到某个表单中(未必非要是同一个表) 那么该行数据在后续插入中将不会被再次使用 也就是说使用first关键字 原表每行数据按照执行顺序只会 *** 入一次
insertfirst
when birthday 》 月 theninto tdate
when birthday 《 月 theninto tdate
whenname = zhangsan theninto tdate
whenname = lisi theninto tdate
lishixinzhi/Article/program/Oracle/201311/18168oracle MERGE into跟insert all有什么区别
MERGE into 的操作包含了update,和insert操作,如果数据存在就执行update,如果数据不存在就执行insert操作
**L中的insert all怎么用
标准**L中是没有insert all的,每个insert语句只能插入一行,并且每个insert语句只能对一张表执行插入数据操作。
更多文章:
sort命令的具体使用方法(linux sort 命令整理)
2026年4月30日 14:40
vscode输入了代码怎么运行(visual studio code怎么运行代码)
2026年4月30日 14:00
不是jquery的选择器(jquery的核心功能不是根据选择器查找HTML元素然后对元素执行相应操作这句话是对是错 )
2026年4月30日 13:20
c语言随机产生0 10的整数(c语言:随机产生的100个0到10之间的整数,设计程序,统计0到10的个数)
2026年4月30日 12:40
matlab的imwrite函数(matlab如何用out输出图像)
2026年4月30日 12:20
insert all(在Oracle中,通过一个INSERT ALL语句批量插入数据)
2026年4月30日 12:00
oracle建库步骤(在命令行如何创建oracle实例与数据库,需要详细点教程,谢谢)
2026年4月30日 11:40




