1、最基本的insert --单表单行插入
insert into tablename(列名。。。) values(value。。。)
2.单表多行插入
1. insert into select --将select 的结果集插入到目标表中 select 可以是你可以写出来的任意select
insert into table select * from dual;全字段插入
insert into table(col。。。)select * from dual ;对应字段插入
2. merge into 满足条件的update 不满足的insert into
格式:
MERGE INTO 要变更的表 A
USING 数据来源表 B
ON (2表的关联条件 )---括号必须有
WHEN MATCHED THEN ---满足关联条件的 则 进行更新
UPDATE SET A.列=B.列
WHEN NOT MATCHED THEN ---未满足关联条件的 则 进行插入
INSERT (A表中的列) VALUES(B表对应的列);
3.多表多行插入 insert all
1、无条件 insert all -- 多表多行插入(将a 表的数据插入到b表和c表中)
insert all
into b(b表的目标列) values(a表列)
into c(c表的目标列) values(a表列)
select 列。。。 from a;
2、有条件的insert
语法:
insert [all | first]
when condition then insert_into_clause values_clause
[when condition then] [insert_into_clause values_clause]
.......
[else] [insert_into_clause values_clause]
Subquery;
例子:
insert all
when id>5 then into test(id,name) values(id,name)
when id<>2 then into test2(id) values (id)
else into test3 valuse(name)
select id,name from table;
使用all关键字时,oracle 会将扫描所有判断条件 只要满足就执行之后的into语句
使用first关键字时,oracle会从上向下一次判断满足就执行之后的into语句然后跳出此次插入(之后执行最先满足条件的那个into)
3、旋转insert ---将一个表的多个列的数据放到另一表的1个列中
insert all
into table1 values(year,month,aaa)
into table1 values(year,month,bbb)
into table1 values(year,month,ccc)
select year,month,aaa,bbb,ccc from table;