Kodokon kodokon.com

データの変更:INSERT、UPDATE、DELETE

行を安全に追加、変更、削除し、WHEREの付け忘れという古典的な罠を避けましょう。

8 分 · 3 問

このレッスンを Kodokon で開く

ここまで、あなたはデータを読み取ることしかしてきませんでした。書き込みに移りましょう。INSERT INTOは行を追加します。丸括弧の中に列を並べ、それからVALUESのあとに対応する値を同じ順序で並べます。列を明示的に指定するのは良い習慣です。テーブルの構造が変化してもクエリは有効なままです。

SQL
INSERT INTO books (id, title, author, genre, year, price)
VALUES (8, 'Ravage', 'Barjavel', 'sf', 1943, 7.5);

SELECT * FROM books WHERE id = 8;
8冊目の本を追加し、それから確認する

UPDATE既存の行を変更します。SETのあとに列とその新しい値を示し、WHEREのあとにどの行が影響を受けるかを指定します。このWHEREは極めて重要です。変更の対象を絞り込むものだからです。

SQL
UPDATE books SET price = 8.9 WHERE id = 8;

SELECT title, price FROM books WHERE id = 8;
Ravageの価格が7.5から8.9になる

DELETE FROMは行を取り除きます。UPDATEと同じように、WHERE句は削除する行を指定します。それ以外はそのまま残ります。さっき追加した本を削除し、それから件数を確認しましょう。

SQL
DELETE FROM books WHERE id = 8;

SELECT COUNT(*) FROM books;
7行に戻る:元のテーブルは無傷
SQL
BEGIN;
DELETE FROM books WHERE genre = 'sf';
SELECT COUNT(*) FROM books;
ROLLBACK;
SELECT COUNT(*) FROM books;
トランザクション中は3行、ROLLBACKのあとは7行

理解度チェック

このレッスンの要点をしっかり覚えているか確認しましょう。

  1. WHEREなしで実行したとき、クエリDELETE FROM books;は何をしますか?
    • テーブルの最初の行を削除する
    • テーブルのすべての行を削除する
    • 構文エラーを引き起こす
  2. id 3の本の価格を6.9に変えるクエリはどれですか?
    • UPDATE books SET price = 6.9 WHERE id = 3;
    • INSERT INTO books SET price = 6.9;
    • SELECT price = 6.9 FROM books WHERE id = 3;
  3. トランザクションの中で、ROLLBACKは何のためのものですか?
    • 変更を確定させるため
    • BEGIN以降に加えたすべての変更を取り消すため
    • 対象のテーブルを削除するため