INSERT¶
Name
INSERT -- テーブルに新しい行を作成
Synopsis
INSERT INTO <table>[@<dblink> ] [ ( <column> [, ...] ) ]
{ VALUES ( { <expression> | DEFAULT } [, ...] )
[ RETURNING <return_expression> [, ...]
{ INTO { <record> | <variable> [, ...] }
| BULK COLLECT INTO <collection> [, ...] } ]
| <query> }
Description
INSERT を使用すると、テーブルに新しい行を挿入できます。一度に1つの行を挿入することも、クエリの結果として複数の行を挿入することもできます。
ターゲットリストの列は、任意の順序でリストできます。ターゲットリストにない各列は、宣言されたデフォルト値またはnullのデフォルト値を使用して挿入されます。
各列の式が正しいデータ型でない場合、自動型変換が試行されます。
RETURNING INTO { record | variable [, ...] } 句は、 INSERT コマンドがSPLプログラム内で使用され、 VALUES 句が使用されている場合にのみ指定できます。
RETURNING BULK COLLECT INTO collection [, ...] 節は、 INSERT コマンドがSPLプログラム内で使用される場合にのみ指定できます。 BULK COLLECT INTO 句のターゲットとして複数の collection が指定されている場合、各 collection は単一のスカラーフィールドで構成されている必要があります。つまり、 collection はレコードであってはなりません。挿入された行ごとに return_expression が評価され、最初の要素から collection の要素になります。 collection の既存の行はすべて削除されます。結果セットが空の場合、 collection は空になります。
テーブルに挿入するには、テーブルに対する INSERT 権限が必要です。 query 句を使用してクエリから行を挿入する場合、クエリで使用されるテーブルに対する SELECT 権限も必要です。
Parameters
table
既存のテーブルの名前(オプションでスキーマ修飾)。
dblink
リモートデータベースを識別するデータベースリンク名。データベースリンクの詳細については、
CREATE DATABASE LINKコマンドを参照してください。
column
tableの列の名前。
expression
columnに割り当てる式または値。
DEFAULT
この列にはデフォルト値が入力されます。
query
挿入する行を提供するクエリ(
SELECTステートメント)。構文の説明については、SELECTコマンドを参照してください。
return_expression
tableの1つ以上の列を含む可能性のある式。return_expressionにtableの列名が指定されている場合、return_expressionの評価時に列に代入される値は次のように決定されます。
return_expressionで指定された列にINSERTコマンドで値が割り当てられている場合、割り当てられた値はreturn_expressionの評価に使用されます。
return_expressionで指定された列にINSERTコマンドで値が割り当てられておらず、テーブルの列定義に列のデフォルト値がない場合、return_expressionの評価ではnullが使用されます。
return_expressionで指定された列にINSERTコマンドで値が割り当てられておらず、テーブルの列定義に列のデフォルト値がある場合、return_expressionの評価ではデフォルト値が使用されます。
record
評価された
return_expressionが割り当てられるフィールドを持つレコード。最初のreturn_expressionはrecordの最初のフィールドに割り当てられ、2番目のreturn_expressionはrecordの2番目のフィールドに割り当てられます。recordのフィールドの数は式の数と正確に一致する必要がありますフィールドは、割り当てられた式と型互換性がなければなりません。
variable
評価された
return_expressionが割り当てられる変数。複数のreturn_expressionとvariableが指定されている場合、最初のreturn_expressionが最初のvariableに割り当てられ、2番目のreturn_expressionが2番目のvariableに割り当てられます。INTOキーワードはRETURNINGキーワードに続く式の数と正確に一致する必要があり、変数は割り当てられた式と型互換性がなければなりません。
collection
評価された
return_expressionから要素が作成されるコレクション。単一フィールドのコレクションまたはレコードタイプのコレクションである単一コレクション、または複数のコレクションがあり、各コレクションが単一フィールドで構成されている必要があります。戻り式の数は数が一致し、指定されたすべてのコレクション内のフィールドの数を並べる必要があります。対応する各return_expressionおよびcollectionフィールドは、タイプ互換である必要があります。
Examples
テーブル emp に単一の行を挿入します。
INSERT INTO emp VALUES (8021,'JOHN','SALESMAN',7698,'22-FEB-07',1250,500,30);
この2番目の例では、列 comm が省略されているため、デフォルト値はnullになります。
INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, deptno)
VALUES (8022,'PETERS','CLERK',7698,'03-DEC-06',950,30);
3番目の例では、値を指定するのではなく、 hiredate 列と comm 列に DEFAULT 句を使用しています。
INSERT INTO emp VALUES (8023,'FORD','ANALYST',7566,NULL,3000,NULL,20);
この例では、部門名のテーブルを作成し、 dept テーブルの dname 列から選択してテーブルに挿入します。
CREATE TABLE deptnames (
deptname VARCHAR2(14)
);
INSERT INTO deptnames SELECT dname FROM dept;