テーブルに行を作成します。
構文
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_expression で table の列名が指定されている場合、return_expression が評価されるときに列に代入される値は次のように決定されます。
|
record | return_expression の評価結果を割り当てるフィールドがあるレコード。 たとえば、最初の return_expression には record の最初のフィールドが割り当てられ、2 番目の return_expression には record の 2 番目のフィールドが割り当てられます。 レコード内のフィールドの数は式の数と一致する必要があり、フィールドは対応する式とタイプ互換である必要があります。
|
variable | return_expression の評価結果を割り当てる変数。 複数の return_expression と variable を指定した場合、最初の 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;