OracleDatabaseのデータ挿入SQL、「insert」文について紹介します。
「insert」文は、「update」、「delete」と同様にDML(Data Manipulation Language )と呼ばれ、データを操作するSQL文になります。
「insert」文は単純SQLですが、「insert into ~ select」文などテクニックもあり意外に奥が深いです。
この記事で「insert文」の基本的な使い方から、insert高速化のためのTIPSも紹介します。
目次
基本構文:insert into ~ value
insert 文の基本構文は以下になります。
insert into <テーブル名> (
<列名①>,
<列名②>,
<列名③>...
) values (
<列①の値>,
<列②の値>,
<列③の値>...
)
下がサンプルのinsert文になります。
create table EMPLOYEE (
EMPNO varchar2(10),
NAME varchar2(20),
SALARY number
);
insert into EMPLOYEE (
EMPNO,
NAME,
SALARY
) values (
'00001',
'TARO TANAKA',
300000
);
select *
from EMPLOYEE;
EMPNO NAME SALARY
---------- ------------------------- ----------
00001 TARO TANAKA 300000
またinsert文は全カラムを指定した場合、列名を省略して記載することができます。
insert into <テーブル名>
values (
<列①の値>,
<列②の値>,
<列③の値>...
)
下が全カラムを指定した場合のサンプルinsert文になります。
insert into EMPLOYEE
values (
'00001',
'TARO TANAKA',
300000
);
表データをまとめて挿入:insert into ~ select
表データをまとめてinsertすることが出来るのが「insert into ~ select」で実施することができます。
insert into <テーブル名>
select
<列名>,
<列名>,
<列名>...
from <ソースのテーブル名>;
以下がサンプルになります。
insert into EMPLOYEE
select *
from EMPLOYEE_BK;
もちろん列名を指定してinsertすることも出来ます。
insert into EMPLOYEE
EMPNO,
NAME,
SALARY
select
EMPNO,
NAME,
SALARY
from EMPLOYEE_BK;
ここでは記載しませんが、結合した表を1つの表へinsertすることもできます。
ダイレクト・パス・インサート:/+ APPEND /
「insert into ~ select」など効果的なinsert方法に「ダイレクト・パス・インサート」があります。
ダイレクト・パス・インサートとは、データベースバッファを経由せずデータファイルへ直接データを書き込みます。
そのため、バッチ処理のように大量のデータを一括でinsertさせる時に大変性能が向上します。
ダイレクト・パス・インサートを使用するためにはヒント句「/+ APPEND /」を使用します。
insert /*+ APPEND */ into <テーブル名>
select * from <ソーステーブル名> ;
下が「/+ APPEND /」を使用したサンプルです。
insert /*+ APPEND */ into EMPLOYEE_BK
select * from EMPLOYEE ;
created by Rinker
¥2,178
(2024/12/04 11:56:48時点 Amazon調べ-詳細)