導入
まずは CRUD の Create にあたる INSERT。テーブルに新しい行を追加します。
説明
INSERT INTO に「どのテーブルの・どの列に・どんな値を入れるか」を指定します。
INSERT INTO users (id, name, age, city, joined_at)
VALUES (7, '山田', 25, '名古屋', '2026-05-01');
(id, name, age, city, joined_at) が列の並び、VALUES (...) がそれに対応する値です。列の順番と値の順番を一致させます。文字列は 'シングルクオート' で囲み、数値はそのまま書きます。
flowchart LR
Cols["(id, name, age, city, joined_at)<br/>← 入れる列の並び"]
Vals["(7, '山田', 25, '名古屋', '2026-05-01')<br/>← 対応する値(同じ順番!)"]
Cols --> Vals
INSERT は結果の表を返しません。実行すると「1 行に影響」のように表示されます。追加された行を確かめるには、続けて SELECT してみましょう。
SELECT * FROM users;
値を VALUES の後ろにカンマで並べれば、複数行を一度に追加できます。
INSERT INTO products (id, name, price, category_id, stock) VALUES
(8, 'マウスパッド', 900, 1, 50),
(9, 'HDMIケーブル', 1200, 4, 80);
なお、列の一覧は省略もできますが(INSERT INTO users VALUES (...))、その場合は全列を定義順どおりに書く必要があります。列名を明示するほうが安全で読みやすいので、基本は書く習慣を付けましょう。省略した列に DEFAULT 値が設定されていれば、その値が入ります(products.stock は既定 0)。
やってみよう
初期表示の INSERT を実行し、「1 行に影響」と出ることを確認します。続けて SELECT * FROM users; を実行して、山田さんが7人目として増えていることを見てみましょう。
演習
products テーブルに、id=10・name=‘Webカメラ三脚’・price=2500・category_id=4・stock=15 の商品を1件追加してください。
ヒント1を見る
列名は (id, name, price, category_id, stock)。数値はそのまま、文字列は '...' で囲みます。
ヒント2を見る
INSERT INTO products (id, name, price, category_id, stock) VALUES (10, 'Webカメラ三脚', 2500, 4, 15);