INSERT 構文
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 で得られる項目の数と型が一致しなければなりません。