亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Oracle sql批量插入多條數(shù)據(jù)的實(shí)現(xiàn)

 更新時(shí)間:2023年07月29日 11:05:41   作者:cjjiang1536  
這篇文章主要介紹了Oracle sql批量插入多條數(shù)據(jù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Oracle中一次插入多條的方法

在Oracle里面,不支持像mysql那樣直接在后面拼多個(gè)記錄。

Oracle中有兩個(gè)方法達(dá)到批量插入的效果

方法一:采用union all拼接查詢方式

insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
? ? ? ? ? select 8000,0,'Multi 8000',1 from dual
union all select 8001,0,'Multi 8001',1 from dual

方法二:采用insert all的方式

由于insert all方式插入多條時(shí),通過sequence獲取的值是同一個(gè),不會(huì)自動(dòng)獲取多個(gè),所以id需要通過其他方式設(shè)置,(我這里采用觸發(fā)器方式自動(dòng)設(shè)置id)

1、創(chuàng)建測(cè)試表

create table test_insert(
? ? ? ?data_id number(10) primary key,
? ? ? ?user_name varchar2(30),
? ? ? ?address varchar2(50)
)

data_id為主鍵,通過sequence產(chǎn)生主鍵值

2、創(chuàng)建序列

create sequence seq_test_insert?
minvalue 1
maxvalue 999999999999999999999999
start with 1
increment by 1
cache 20;

3、創(chuàng)建觸發(fā)器

通過觸發(fā)器自動(dòng)給insert語句設(shè)置值

create or replace trigger tr_test_insert
before insert on test_insert
for each row
begin
? select seq_test_insert.nextval into :new.data_id from dual;
end;?

4、插入數(shù)據(jù)

insert all?
into test_insert(user_name,address) values('aaa','henan')
into test_insert(user_name,address) values('bbb','shanghai')
into test_insert(user_name,address) values('ccc','beijing')
select * from dual;

需要注意的是,在insert all語句里不能直接使用seq_test_insert.nextval,因?yàn)榧幢忝總€(gè)into語句里都加上seq_test_insert.nextval也不會(huì)獲得多個(gè)值。

另外,insert all還支持往不同的表里插入數(shù)據(jù),如:

insert all?
into table1(filed1,filed2)values('value1','value2')
into table2(字段1,字段2,字段3) values(值1,值2,值3)
select * from dual;

Oracle sql 批量插入 Insert all into

描述

Oracle INSERT ALL 語句用來用一個(gè) INSERT 語句添加多行。

該行可以只使用一個(gè)SQL命令插入到一個(gè)表或多個(gè)表。

語法

Oracle INSERT ALL 語法如下:

INSERT ALL
? INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
? INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
? INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
SELECT * FROM dual;

參數(shù)

MYTABLE 向該表中插入記錄

  • column1, column2, column_n 該表中插入的列
  • expr1, expr2, … expr_n 該表中插入的值

示例 - 插入到一個(gè)表

可以使用 INSERT INTO 語句多個(gè)記錄插入到一個(gè)表。

例如,如果你想插入3行到成績(jī)表,你可以運(yùn)行下面的SQL語句:

INSERT ALL
? INTO score (s_id, s_name) VALUES (1000, 'ZS')
? INTO score (s_id, s_name) VALUES (2000, 'LS')
? INTO score (s_id, s_name) VALUES (3000, 'WZ')
SELECT * FROM dual;

這等同于以下3 INSERT 語句:

INSERT INTO score (s_id, s_name) VALUES (1000, 'ZS');
INSERT INTO score (s_id, s_name) VALUES (2000, 'LS');
INSERT INTO score (s_id, s_name) VALUES (3000, 'WZ');

示例 - 插入到多個(gè)表

也可以使用 INSERT ALL 語句將多個(gè)行插入多個(gè)表中的一個(gè)命令。

例如,如果你想插入兩條記錄到成績(jī)表一條記錄到課程表,可以運(yùn)行下面的SQL語句:

INSERT ALL
? INTO score (s_id, s_name) VALUES (1000, 'ZS')
? INTO score (s_id, s_name) VALUES (2000, 'LS')
? INTO course (c_id, c_name, c_time) VALUES (5000, 'Computer', '9:00')
SELECT * FROM dual;

這等同于以下3 INSERT 語句:

INSERT INTO score (s_id, s_name) VALUES (1000, 'ZS');
INSERT INTO score (s_id, s_name) VALUES (2000, 'LS');
INSERT INTO course (c_id, c_name, c_time) VALUES (5000, 'Computer', '9:00');

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論