テーブルに行を作成します。

構文

INSERT INTO table[@dblink ] [ ( column [, ...] ) ]
  { VALUES ( { expression | DEFAULT } [, ...] )
    [ RETURNING return_expression [, ...]
        { INTO { record | variable [, ...] }
        | BULK COLLECT INTO collection [, ...] } ]
  | query }

説明

INSERT コマンドを実行すると、テーブルに新しい行を挿入できます。 クエリの結果として 1 つまたは複数の行を挿入できます。

列は所望の順序でリスト表示できます。 ターゲットリストにない各列には、宣言されたデフォルト値または null のデフォルト値が挿入されます。

列の式で正しいデータ型が使用されていない場合、自動型変換が試行されます。

INSERT コマンドが SPL プログラム内で使用され、VALUES 句が指定されている場合、RETURNING INTO { record | variable [, ...] } 句を指定できます。

SPL プログラム内で INSERT コマンドを使用する場合、RETURNING BULK COLLECT INTO collection [, ...] 句を指定できます。 BULK COLLECT INTO 句のターゲットとして collection を複数指定する場合、それぞれの collection は単一のスカラーフィールドで構成する必要があります。collection をレコードにすることはできません。 挿入された各行の評価値 return_expression は、最初の要素から始まる collection 内の要素です。 collection 内の既存の行は削除されます。 結果セットが空の場合、collection も空です。

テーブルに挿入するには、テーブルに対する INSERT 権限を持っている必要があります。 query 句を使用してクエリから行を挿入する場合、クエリで使用するテーブルに対する SELECT 権限も必要です。

パラメーター

パラメーター 説明
table 既存のテーブルの名前。 名前はスキーマで修飾できます。
dblink リモートデータベースを識別するために使用されるデータベースリンクの名前。 データベースリンクの詳細については、CREATE DATABASE LINK コマンドをご参照ください。
column table の列の名前。
expression column に割り当てる式または値。
DEFAULT 列のデフォルト値。
query 挿入する行を提供するクエリ (SELECT 文)。 詳細については、SELECT コマンドをご参照ください。
return_expression table の 1 つ以上の列を含めることができる式。 return_expressiontable の列名が指定されている場合、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 番目のフィールドが割り当てられます。 レコード内のフィールドの数は式の数と一致する必要があり、フィールドは対応する式とタイプ互換である必要があります。
variable return_expression の評価結果を割り当てる変数。 複数の return_expressionvariable を指定した場合、最初の return_expression が最初の variable に、2 番目の return_expression が 2 番目の variable に割り当てられます。 INTO キーワード後に指定する変数の数は、RETURNING キーワードに続く式の数と一致する必要があります。また、変数は対応する式とタイプ互換でなければなりません。
collection 評価された return_expression から要素が作成されるコレクション。 単一フィールドのコレクションまたはレコードタイプのコレクションを指定できます。 各コレクションが単一フィールドで構成される複数のコレクションを指定することもできます。 戻り式の数は、指定されたすべてのコレクションのフィールドの数と順序で一致する必要があります。 それぞれの return_expression は、対応する collection フィールドとタイプ互換である必要があります。

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;