SQLite - 更新クエリ
こんにちは、未来のデータベース魔術師さんたち!今日は、SQLiteの素晴らしい世界に飛び込み、最も強力な魔法の一つであるUPDATEクエリについて学びます。図書館司書として、あなたの書庫のいくつかの書籍カードの情報を変更する必要があるとします。まさに、UPDATEクエリがデータベースで行う的就是それです!
UPDATEクエリとは?
UPDATEクエリは、データベーステーブル内の既存レコードを修正するための魔法の杖のようなものです。データベース内に保存されているデータを変更する必要があるときに非常に便利です。
なぜUPDATEクエリが必要か?
図書店のデータベースを管理しているとします。ある日、ある本の価格が変わったことに気づきます。古いレコードを削除して新しいレコードを作成する代わりに、単に既存のレコードを新しい価格で更新することができます。それがUPDATEクエリが便利な理由です!
文法
では、UPDATEクエリの魔法の呪文、つまり文法を見てみましょう:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
これを分解してみましょう:
-
UPDATE table_name
:どのテーブルを更新するかを指定します。 -
SET column1 = value1, column2 = value2, ...
:変更したいカラムとその新しい値をリストアップします。 -
WHERE condition
:これはオプションですが、非常に重要です。どの行を更新するかを指定します。これを省略すると、テーブル内のすべての行が更新されます!
例
例1: 単一カラムの更新
簡単な例から始めましょう。books
というテーブルがあり、id
、title
、author
、price
というカラムがあります。ある本の価格を更新したいとします。
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