前回は SELECT でデータを取り出す方法を学びました。今回は残りの3操作 — データの追加、更新、削除を扱います。これで CRUD(クラッド)がそろいます。
前回と同じく DB Browser for SQLite(practice.db)を使います。
CRUD とは
Web アプリで行うデータ操作は、大きく4つに分類できます。
| 操作 | 英語 | SQL |
|---|---|---|
| 作成 | Create | INSERT |
| 読み取り | Read | SELECT |
| 更新 | Update | UPDATE |
| 削除 | Delete | DELETE |
この4つの頭文字を並べた CRUD は、Web 開発で頻繁に出てくる用語です。Spring Boot の回でも「CRUD アプリを作る」という形で登場します。
INSERT — 行を追加する
前回、テーブル作成時に使った INSERT をもう少し詳しく見ます。
全列を指定して追加
INSERT INTO employees (id, name, department, age)
VALUES (6, '中村亮', '開発部', 27);
追加できたか確認します。
SELECT * FROM employees WHERE id = 6;
| id | name | department | age |
|---|---|---|---|
| 6 | 中村亮 | 開発部 | 27 |
列名を省略するパターン
テーブルの全列に値を入れる場合、列名を省略することもできます。
INSERT INTO employees VALUES (7, '小林真理', '営業部', 30);
ただし、列の順番を正確に覚えていないとミスの原因になります。列名を明示する書き方のほうが安全です。
UPDATE — 行を更新する
既存のデータを変更するには UPDATE を使います。
WHERE で対象を指定して更新
UPDATE employees SET department = '総務部' WHERE id = 3;
「id が3の社員の部署を総務部に変更する」という意味です。確認してみます。
SELECT * FROM employees WHERE id = 3;
| id | name | department | age |
|---|---|---|---|
| 3 | 佐藤次郎 | 総務部 | 25 |
元は「開発部」だったのが「総務部」に変わっています。
複数の列を同時に更新
SET のあとにカンマで区切って複数の列を指定できます。
UPDATE employees SET department = '開発部', age = 26 WHERE id = 3;
WHERE を忘れると全行が更新される
SQL では -- から行末までがコメントです。実行されないメモとして使えます。
-- 危険な例(実行しないでください)
UPDATE employees SET department = '開発部';
WHERE がないと、テーブルの全行が対象になります。全員の部署が「開発部」に書き換わってしまいます。UPDATE を書くときは「WHERE を書いたか」を必ず確認する習慣をつけてください。
DELETE — 行を削除する
行を削除するには DELETE を使います。
WHERE で対象を指定して削除
DELETE FROM employees WHERE id = 7;
「id が7の行を削除する」という意味です。
SELECT * FROM employees WHERE id = 7;
結果が0件なら削除が成功しています。
WHERE を忘れると全行が削除される
-- 危険な例(実行しないでください)
DELETE FROM employees;
WHERE がないと、テーブル内の全行が削除されます。UPDATE と同じく、WHERE の確認が重要です。
もとに戻す場合
練習中にデータが崩れた場合は、テーブルを削除して作り直せます。
DROP TABLE employees;
そのあと、前回の CREATE TABLE と INSERT を再実行すれば初期状態に戻ります。
まとめ
| SQL | 役割 | 注意点 |
|---|---|---|
INSERT INTO テーブル (...) VALUES (...) | 行を追加する | — |
UPDATE テーブル SET 列=値 WHERE 条件 | 行を更新する | WHERE がないと全行が対象 |
DELETE FROM テーブル WHERE 条件 | 行を削除する | WHERE がないと全行が対象 |
次の回へ
INSERT で行を追加し、UPDATE で変更し、DELETE で削除できたら CRUD の基本操作は完了です。次の回では、複数のテーブルを結合する JOIN を扱います。