INSERT 構文

メモ:  Category:mysql

INSERT 文を使用すると、表に行を追加することができます。

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    VALUES ((expression | DEFAULT),...),(...),...
    [ ON DUPLICATE KEY UPDATE col_name=expression, ... ]


INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...


INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
    [INTO] tbl_name
    SET col_name=(expression | DEFAULT), ...
    [ ON DUPLICATE KEY UPDATE col_name=expression, ... ]

[LOW_PRIORITY | DELAYED] [IGNORE]は通常使うことは無いと思いますが紹介しておきます。

オプション 意味
LOW_PRIORITY 他のクライアントによるそのテーブルからの読み取りがなくなるまで、INSERT の実行は遅らされます。
注意: LOW_PRIORITY では同時挿入が無効になるため、このオプションは通常 MyISAM テーブルに対しては使用しない。
DELAYED レコードをバッファに挿入します。サーバーは、テーブルが開放されるとまとめて挿入を開始します。
IGNORE INSERTに失敗してもエラーを返しません。
ON DUPLICATE KEY UPDATE PRIMARYまたはUNIQUEキーでの重複する値を持つレコードが挿入されると、古いレコードのUPDATEが実行されます。

新しい行を追加するには

INSERT INTO テーブル名 (列名1[,列名2,...]) VALUES (値1[,値2,...]);

テーブルの全ての項目へ値を入れる場合は、列名を省略できます。 その場合、 VALUES の値は、テーブルで定義された項目の順に並べます。

SELECT文で得られた結果セットを表へ追加するには

INSERT INTO テーブル名 (列名1[,列名2,...]) SELECT 列名1[,列名2,...] FROM テーブル名 [WHERE 条件式];

行を挿入される表の項目と SELECT で得られる項目の数と型が一致しなければなりません。

bluenote by BBB