INSERT の使い方
行を加える
書き方
INSERT INTO 表 (列, …) VALUES (値, …), (値, …); INSERT INTO 表 SELECT …;
列を書かないときはすべての列を表の順番で。書かなかった列は DEFAULT か NULL になります。
よく使うオプション
| オプション | 意味 |
|---|---|
INSERT INTO 表 (列, …) VALUES (…) | 列を決めて 1 行入れる |
VALUES (…), (…) | 何行かまとめて入れる |
INSERT INTO 表 SELECT … | 問い合わせの結果を入れる |
DEFAULT | 列の決まった値(初めの値)を入れる |
例
INSERT INTO departments (id, name) VALUES (4, '広報');INSERT 0 1部署を 1 つ加えます。列の名前と値は、同じ順番で書きます。
INSERT INTO customers (id, name, city) VALUES (201, '石井', '仙台'), (202, '森', '札幌');INSERT 0 22 行をまとめて加えます。書かなかった phone の列は NULL になります。
INSERT INTO orders (id, customer_id, total, ordered_on, status) VALUES (9001, 201, 4800, CURRENT_DATE, DEFAULT);
status には、表を作ったときに決めた初めの値を入れます。
INSERT INTO archived_orders SELECT * FROM orders WHERE ordered_on < '2023-01-01';
古い注文を、保管用の表に写します。SELECT の結果をそのまま入れられます。
よくある間違い・注意
- 列の名前を書かないと、表のすべての列を表の順番で入れることになります。表の形が変わると壊れるので、列の名前は書いておきます。
- 主キーや UNIQUE の列に同じ値を入れるとエラーになり、その文はまるごと入りません。
実際に打って練習する
SQL コースの Lv38「行を加える INSERT」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。