oracleのINSERTステートメントは、DML(データ操作言語)コマンドです。これは、OracleデータベースのOracleテーブルに新しい行を挿入するために使用されます
SyntaxINSERT INTO <table_name>
(col1, col2, ... column_n )
VALUES
(value1, value2, ... value_n );
ここ
table_name :新しいレコードを挿入する必要があるテーブル
col1、col2 :はテーブルの列です
value1、value2…。 :テーブル内のcol1、col2…に対応する値です
この構文でテーブルに挿入される行は1つだけです
EMPテーブルにレコードを入力するとします。次に
insert into emp (emp_id, emp_name,dept_id,first_name,last_name,salary)
values ('101','JOHN', 10,'JOHN' ,'ROGER', 3000);
重要な注意
- 正しい順序で値を指定し、テーブルの各列の値が指定されている場合は、列名を指定する必要はありません。
- 文字値を一重引用符で囲むことをお勧めします。
テーブルにNull値を挿入する方法
いくつかの列にnull値を設定する場合は、挿入コマンドで列を省略できます
insert into emp (emp_id, emp_name,dept_id,salary)
values ('101','JOHN', 10, 3000);
Selectステートメントを使用して挿入
selectステートメントを使用してテーブルに挿入することもできます
INSERT INTO <table_name>
(col1, col2, ... column_n ) select col1, col2, ... column_n from < table_name2>
このメソッドは、複数の行に挿入するために使用できます
- ここでvalues句を使用する必要はありません
- 機能させるには、挿入の列を選択クエリと一致させる必要があります
- 正しい順序で値を指定し、テーブルの各列の値が指定されている場合は、列名を指定する必要はありません。
Example insert into emp_master (emp_id ,salary) select emp_id ,salary from emp; INSERT INTO emp_master (emp_id ,salary) WITH sal AS ( SELECT 201,5000 FROM dual UNION ALL SELECT 201, 10000 FROM dual UNION ALL SELECT 204, 10004 FROM dual UNION ALL SELECT 7, 5675476 FROM dual ) SELECT * FROM sal;
テーブルに日付関数を挿入
テーブルにoracledateデータ型の列があるとすると、sysdate関数を使用して挿入ステートメントに日付を入力できます
insert into emp (emp_id,emp_name,salary,hire_date) values ( '10','JOHN',1000, sysdate); insert into emp (emp_id,emp_name,salary,hire_date) values ( '10','JOHN',1000, sysdate -1);
または、特定の日付を指定する必要がある場合は、日付「DD-MON-YYYY」の標準形式を使用できます。この時間はデフォルトで深夜になります
insert into emp (emp_id,emp_name,salary,hire_date) values ( '10','JOHN',1000, '18-AUG-2018');
または、しばらくして別の形式でデータを入力する必要がある場合は、to_date関数を使用できます
insert into emp (emp_id,emp_name,salary,hire_date) values ( '10','JOHN',1000, TO_DATE('2018/08/18 01:02:44', 'yyyy/mm/dd hh24:mi:ss'));
Oracleはすべてのステートメントを挿入します
Oracleのinsertallステートメントは、テーブルに複数の行を一度に追加するのに役立ちます。または、同じ挿入ステートメントを使用して、異なるテーブルに複数の行を追加することもできます。
1つのテーブルの構文
INSERT ALL INTO
<table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
SELECT * FROM dual;
複数のテーブルの構文
INSERT ALL INTO
<table_name1> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name2> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
<table_name3> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
SELECT * FROM dual;
これは
と同等ですINSERT INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n );
INSERT INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
INSERT INTO <table_name> (col1, col2, ... column_n ) VALUES (value1, value2, ... value_n )
例
insert all into
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('101','JOHN', 10,'JOHN' ,'ROGER', 2000)
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('102','SMITH', 10,'JOHN' ,'ROGER', 3000)
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('103','BILL', 10,'JOHN' ,'ROGER', 4000)
SELECT * FROM dual;
insert all into
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('101','JOHN', 10,'JOHN' ,'ROGER', 2000)
dept (dept_no, dept_name,dept_location) values ('20','BILLING', 'NEWYORK)
emp (emp_id, emp_name,dept_id,first_name,last_name,salary) values ('103','BILL', 10,'JOHN' ,'ROGER', 4000)
SELECT * FROM dual;
すべてのステートメントを挿入は、以下の方法でも使用できます
insert all INTO emp (emp_id, emp_name,dept_id,salary) values (id,name, dept_no, sal) INTO dept (dept_no, dept_name,dept_location) values (dept_no,dept_name,location) WITH names AS ( SELECT 4 id, 'John' name,10 dept_no,'LABOUR' dept_name,'INDIA' location, 45000 sal FROM dual UNION ALL SELECT 5 id, 'Mac' name,20 dept_no,'FIRE' dept_name,'INDIA' location, 567000 sal FROM dual UNION ALL SELECT 6 id, 'Ruth' name,30 dept_no,'HEALTH' dept_name,'INDIA' location, 5600 sal FROM dual UNION ALL SELECT 8 id, 'bill' name,40 dept_no,'WATER' dept_name,'INDIA' location, 158750 sal FROM dual ) SELECT * FROM names ;
すべてのステートメントを挿入する際に条件ステートメントを使用することができます
insert all WHEN 1=1 THEN INTO emp (emp_id, emp_name,dept_id,salary) values (id,name, dept_no, sal) WHEN dept_no IS NOT NULL THEN dept (dept_no, dept_name,dept_location) values (dept_no,dept_name,location) WITH names AS ( SELECT 4 id, 'John' name,10 dept_no,'LABOUR' dept_name,'INDIA' location, 45000 sal FROM dual UNION ALL SELECT 5 id, 'Mac' name,20 dept_no,'FIRE' dept_name,'INDIA' location, 567000 sal FROM dual UNION ALL SELECT 6 id, 'Ruth' name,30 dept_no,'HEALTH' dept_name,'INDIA' location, 5600 sal FROM dual UNION ALL SELECT 8 id, 'bill' name,40 dept_no,'WATER' dept_name,'INDIA' location, 158750 sal FROM dual SELECT 9 id, 'July' name,NULL dept_no,NULL dept_name,NULL location, 158750 sal FROM dual ) SELECT * FROM names ;
oracleのinsertステートメントのこのコンテンツが気に入っていただければ幸いです。十分な例を挙げて、テーブルで挿入を実行するさまざまな方法を説明しました。
関連記事
OracleのUpdateステートメント:OracleのUpdateステートメントを使用して、OracleデータベースのOracleテーブルの既存の行を変更します。更新は複数の方法で実行できます。
Oracleのテーブルからの削除ステートメント:Oracleのテーブルからの削除は、行を削除するために使用されます。 DELETE行は、EXISTS / NOT EXISTS句、サブクエリに基づくテーブル、カスケードを使用して実行できます
Oracleでテーブルを変更する方法:Oracleでテーブルを変更すると、列の変更、制約の削除と追加、データ型の変更に使用されますテーブル列の、テーブルストレージパラメータを変更します。
テーブル追加列オラクルを変更する方法:テーブル追加列オラクルを変更する方法に関する有用な洞察。 oracle11gで導入された高速追加列機能の詳細も
挿入に関するOracleのドキュメント