.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "INSERT" "" "2004-06-19" "SQL - 言語" "SQL コマンド"
.SH NAME
INSERT \- テーブルに新しい行を作成

.SH SYNOPSIS
.sp
.nf
INSERT INTO \fItable\fR [ ( \fIcolumn\fR [, ...] ) ]
    { DEFAULT VALUES | VALUES ( { \fIexpression\fR | DEFAULT } [, ...] ) | \fIquery\fR }
.sp
.fi
.SH "説明"
.PP
\fBINSERT\fR を使用して、テーブルに新しい行を挿入することができます。
1 度に 1 つの行を挿入することも可能ですし、問い合わせの結果として複数の行を挿入することもできます。
.PP
対象リスト内の列はどのような順番でも指定できます。
対象リストに無い各列にはデフォルト値、つまり、宣言されたデフォルト値かNULLが挿入されます。
.PP
各列の表現が正しいデータ型でない場合は、自動的に型の強制が行なわれます。
.PP
テーブルに追加するためには、そのテーブルに対してINSERT権限を持っている必要があります。 
\fIquery\fRを使用して問い合わせを元に行を挿入する場合は、その問い合わせ内で使われる全てのテーブルに対してSELECT権限を持っている必要があります。
.SH "パラメータ"
.TP
\fB\fItable\fB\fR
既存のテーブルの名前です (スキーマ修飾名でも可)。
.TP
\fB\fIcolumn\fB\fR
\fItable\fR 内の列名です。
.TP
\fBDEFAULT VALUES\fR
全ての列には、そのデフォルト値が設定されます。
.TP
\fB\fIexpression\fB\fR
\fIcolumn\fR に挿入する有効な式または値です。
.TP
\fBDEFAULT\fR
この列には、そのデフォルト値が設定されます。
.TP
\fB\fIquery\fB\fR
挿入する行を提供する問い合わせ(\fBSELECT\fR文)です。
構文の説明については \fBSELECT\fR 文を参照して下さい。
.SH "出力"
.PP
正常に終了すると、\fBINSERT\fR は以下のようなコマンドタグを返します。
.sp
.nf
INSERT \fIoid\fR \fIcount\fR
.sp
.fi
\fIcount\fRは挿入された行数です。
\fIcount\fRが正確に1であり、対象のテーブルがOIDを持つ場合、\fIoid\fR は挿入された行に割り当てられたOID です。
その他の場合、\fIoid\fRは0となります。
.SH "例"
.PP
filmsテーブルに1つの行を挿入します。
.sp
.nf
INSERT INTO films VALUES
    ('UA502', 'Bananas', 105, '1971-07-13', 'Comedy', '82 minutes');
.sp
.fi
.PP
この2つめの例では、最後の列lenを省略しています。 
したがって、そこにはデフォルト値NULLが入ります。
.sp
.nf
INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');
.sp
.fi
.PP
3つめの例では、日付列に対して値を使用するのではなくDEFAULTを使用します。
.sp
.nf
INSERT INTO films VALUES
    ('UA502', 'Bananas', 105, DEFAULT, 'Comedy', '82 minutes');
INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drama');
.sp
.fi
.PP
この例では、tmpテーブルからfilmsテーブルへ複数行を挿入しています。
.sp
.nf
INSERT INTO films SELECT * FROM tmp;
.sp
.fi
.PP
この例では、配列型の列に挿入しています。
.sp
.nf
-- 三目並べ用の 3x3 マスのゲーム盤を作成します。
-- (全ての問い合わせは同じboard 属性を作成します。
INSERT INTO tictactoe (game, board[1:3][1:3])
    VALUES (1,'{{"","",""},{},{"",""}}');
INSERT INTO tictactoe (game, board[3][3])
    VALUES (2,'{}');
INSERT INTO tictactoe (game, board)
    VALUES (3,'{{,,},{,,},{,,}}');
.sp
.fi
.SH "互換性"
.PP
\fBINSERT\fRは標準SQLと完全に互換性があります。
\fIquery\fR 句の機能についての考えられる制限は、 SELECT [\fBselect\fR(l)] にて記述されています。
