SQLite - 更新クエリ

こんにちは、未来のデータベース魔術師さんたち!今日は、SQLiteの素晴らしい世界に飛び込み、最も強力な魔法の一つであるUPDATEクエリについて学びます。図書館司書として、あなたの書庫のいくつかの書籍カードの情報を変更する必要があるとします。まさに、UPDATEクエリがデータベースで行う的就是それです!

SQLite - UPDATE Query

UPDATEクエリとは?

UPDATEクエリは、データベーステーブル内の既存レコードを修正するための魔法の杖のようなものです。データベース内に保存されているデータを変更する必要があるときに非常に便利です。

なぜUPDATEクエリが必要か?

図書店のデータベースを管理しているとします。ある日、ある本の価格が変わったことに気づきます。古いレコードを削除して新しいレコードを作成する代わりに、単に既存のレコードを新しい価格で更新することができます。それがUPDATEクエリが便利な理由です!

文法

では、UPDATEクエリの魔法の呪文、つまり文法を見てみましょう:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

これを分解してみましょう:

  1. UPDATE table_name:どのテーブルを更新するかを指定します。
  2. SET column1 = value1, column2 = value2, ...:変更したいカラムとその新しい値をリストアップします。
  3. WHERE condition:これはオプションですが、非常に重要です。どの行を更新するかを指定します。これを省略すると、テーブル内のすべての行が更新されます!

例1: 単一カラムの更新

簡単な例から始めましょう。booksというテーブルがあり、idtitleauthorpriceというカラムがあります。ある本の価格を更新したいとします。

UPDATE books
SET price = 19.99
WHERE id = 1;

このクエリは、idが1の本の価格を19.99に更新します。

例2: 複数カラムの更新

では、価格と著者を同時に更新したいとします:

UPDATE books
SET price = 24.99, author = 'Jane Doe'
WHERE title = 'The Great Adventure';

このクエリは、タイトルが'The Great Adventure'の本の価格を24.99に、著者を'Jane Doe'に更新します。

例3: すべての行を更新

時にはテーブル内のすべての行を更新したいことがあります。これは図書館全体に魔法をかけるようなものです!

UPDATE books
SET price = price * 1.1;

このクエリは、すべての本の価格を10%増加させます。WHERE句を使用していないため、すべての行に影響します。

例4: 式を使用した更新

UPDATEクエリ内で式を使用することもできます。例えば、高価な本すべてに割引を与えたいとします:

UPDATE books
SET price = price * 0.9
WHERE price > 50;

このクエリは、価格が50ドル以上の本すべての価格を10%減少させます。

例5: 他のテーブルに基づく更新

他のテーブルの情報に基づいてデータを更新することもできます。例えば、salesテーブルがあり、booksテーブルのpopularカラムを更新したいとします:

UPDATE books
SET popular = 1
WHERE id IN (SELECT book_id FROM sales GROUP BY book_id HAVING COUNT(*) > 100);

この複雑なクエリは、100回以上売れた本を人気本としてマークします。

一般的なUPDATEメソッド

以下は、役立つ一般的なUPDATEメソッドの表です:

メソッド 説明
単一カラムの更新 単一カラムを更新 UPDATE books SET price = 19.99 WHERE id = 1;
複数カラムの更新 複数カラムを更新 UPDATE books SET price = 24.99, author = 'Jane Doe' WHERE id = 1;
すべての行を更新 テーブル内のすべての行を更新 UPDATE books SET price = price * 1.1;
条件付き更新 条件を満たす行を更新 UPDATE books SET price = price * 0.9 WHERE price > 50;
サブクエリ更新 サブクエリに基づいて更新 UPDATE books SET popular = 1 WHERE id IN (SELECT book_id FROM sales GROUP BY book_id HAVING COUNT(*) > 100);

若い魔術師たち、強力な力には大きな責任が伴います。WHERE句をキャストする前に必ず二度見してください。間違って図書館のすべての本を更新してしまうとまずいです!

これらの呪文、つまりクエリを練習し、データベースの魔術のマスターになるまでにしませんか?幸せなコーディングを、そしてデータベースは常に最新の状態を保ちましょう!

Credits: Image by storyset