.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "INSERT" "" "2003-08-02" "SQL - 言語" "SQL コマンド"
.SH NAME
INSERT \- テーブルに新しい行を作成
.SH SYNOPSIS
.sp
.nf
INSERT INTO \fItable\fR [ ( \fIcolumn\fR [, ...] ) ]
    { DEFAULT VALUES | VALUES ( { \fIexpression\fR | DEFAULT } [, ...] ) | SELECT \fIquery\fR }
  
.sp
.fi
.SS "入力"
.PP
.TP
\fB\fItable\fB\fR
既存のテーブルの名前です (スキーマ修飾名でも可)。
.TP
\fB\fIcolumn\fB\fR
\fItable\fR 内の列名です。
.TP
\fBDEFAULT VALUES\fR
すべての列には NULL 値、または DEFAULT 句を使用してテーブルを作成した時に指定した値が格納されます。
.TP
\fB\fIexpression\fB\fR
\fIcolumn\fR に挿入する有効な式または値です。
.TP
\fB\fIDEFAULT\fB\fR
この列には、列の DEFAULT 句、またはデフォルトが使用できない場合には NULL が入ります。
.TP
\fB\fIquery\fB\fR
有効な問い合わせです。有効な引数に関するより詳細な説明については SELECT文を参照して下さい。
.PP
.SS "出力"
.PP
.TP
\fBINSERT \fIoid\fB 1\fR
1行だけ挿入された場合に返されるメッセージです。\fI oid\fR は挿入された行のOID番号です。
.TP
\fBINSERT 0 \fI#\fB\fR
2 つ以上の行が挿入された場合に返されるメッセージです。\fI#\fR は挿入された行の数です。
.PP
.SH "説明"
.PP
\fBINSERT\fR を使用して、テーブルに新しい行を挿入することができます。1 度に 1 つの行を挿入することも可能ですし、問い合わせの結果として複数の行を挿入することもできます。対象リスト内の列はどのような順番でも指定できます。
.PP
対象リストに無い各列には、DEFAULT句の値として宣言されたデフォルト値、 または、NULLが挿入されます。 NOT NULL と宣言された列に NULL が挿入されると、PostgreSQL はその新しい列を拒否します。
.PP
各列の表示が正しいデータ型でない場合は、自動的に型の強制が行なわれます。
.PP
テーブルに追加するためには、そのテーブルに対してINSERT権限を持っている必要があります。 また、WHERE句で指定したテーブル全てに対して SELECT権限を持っている必要があります。
.SH "使用方法"
.PP
下記のコマンドはfilmsテーブルに1つの行を挿入します。
.sp
.nf
INSERT INTO films VALUES
    ('UA502','Bananas',105,'1971-07-13','Comedy',INTERVAL '82 minute');
   
.sp
.fi
.PP
この例では、最後の列lenを省略しています。 したがって、そこにはデフォルト値NULLが入ります。
.sp
.nf
INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, DATE '1961-06-16', 'Drama'); 
   
.sp
.fi
.PP
3 つ目の例では、エントリを指定せずに日付列に DEFAULT 値を指定します。
.sp
.nf
INSERT INTO films VALUES
    ('UA502','Bananas',105,'1971-07-13','Comedy',INTERVAL '82 minute');
INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drama');
   
.sp
.fi
.PP
テーブル distributors に、単一行を挿入します。 ここで name という列のみが指定されていることに注意してください。 このため、省略された did列にはそのデフォルト値が代入されることになります。
.sp
.nf
INSERT INTO distributors (name) VALUES ('British Lion');
   
.sp
.fi
.PP
テーブルtmpからテーブル films に複数の行を挿入します。
.sp
.nf
INSERT INTO films SELECT * FROM tmp;
   
.sp
.fi
.PP
配列に挿入します (配列に関するより詳細な情報については \fIPostgreSQL ユーザガイド\fRを参照して下さい)。
.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 "互換性"
.SS "SQL92"
.PP
\fBINSERT\fRはSQL92と完全に互換性があります。\fIquery\fR 句の機能についての考えられる制限は、 SELECT [\fBselect\fR(l)] にて記述されています。
