PostgreSQL - UPDATEクエリ:初心者のためのやさしいガイド

こんにちは、データベース愛好家の卵さんたち!今日は、PostgreSQLの素晴らしい世界に飛び込み、UPDATEクエリについて学びます。プログラミングの初心者でも心配しないでください。私はステップバイステップで説明します。これまでに多くの生徒たちに教えてきたようにです。コーヒー(またはあなたの好みの茶)を一杯取り、始めましょう!

PostgreSQL - Update Query

UPDATEクエリとは?

本題に入る前に、UPDATEクエリとは何かを理解しましょう。デジタルなアドレス帳(データベーステーブルがそうである thing)があるとします。友達が新しい家に引っ越したとします。彼らの新しい住所のため全新しくエントリを作成するでしょうか?もちろん、現在の住所を更新しますよね。それと同じことをPostgreSQLのUPDATEクエリが行います。データベーステーブル内の既存データを修正します。

UPDATEクエリの構文

では、PostgreSQLにおけるUPDATEクエリの基本構文を見てみましょう:

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

これを分解しましょう:

  1. UPDATE table_name:どのテーブルを更新したいかを指定します。
  2. SET column1 = value1, column2 = value2, ...:どのカラムを変更し、どの新しい値に設定したいかを指定します。
  3. WHERE condition:どの行を更新するかを決定します。これを省略すると、テーブルのすべての行が更新されます!

UPDATEクエリの例

例1:基本の更新

employeesというテーブルがあり、idnamesalaryというカラムがあるとします。全員に10%の賃金UPをしたいときは、以下のようにします:

UPDATE employees
SET salary = salary * 1.1;

このクエリは、すべての人の賃金を10%UPします。WHERE句を使っていないので、すべての行に影響します。

例2:条件付きの更新

では、IDが1000未満の従業員にだけ賃金UPをしたいときはどうでしょうか?

UPDATE employees
SET salary = salary * 1.1
WHERE id < 1000;

このクエリは、IDが1000未満の従業員の賃金だけをUPします。

例3:複数のカラムを更新

時々、複数のカラムを一度に更新したい場合があります。特定の従業員の賃金と職位を更新したいときは以下のようになります:

UPDATE employees
SET salary = 75000, job_title = 'Senior Developer'
WHERE id = 1234;

このクエリは、IDが1234の従業員の賃金と職位を更新します。

ベストプラクティスとティップス

  1. WHERE句を使う:すべての行を更新するつもりでない限り、WHERE句を常に含めてください。ある生徒が誤って会社全員にCEOの賃金を支給してしまったことがあります!

  2. トランザクションを使う:重要な更新を行うときは、クエリをトランザクションで囲んでください。何かが間違った場合にロールバックできます:

BEGIN;
UPDATE employees SET salary = salary * 2;
-- あやまち!賃金を倍にするつもりはなかった!
ROLLBACK;
  1. SELECTでまず確認する:UPDATEを実行する前に、WHERE句をSELECTクエリで確認して、正しい行をターゲットしているか確認してください:
SELECT * FROM employees WHERE id < 1000;
-- もし、これが問題ないようであれば:
UPDATE employees SET salary = salary * 1.1 WHERE id < 1000;
  1. RETURNINGを使う:PostgreSQLには、更新された行を見ることができる便利な機能があります:
UPDATE employees
SET salary = salary * 1.1
WHERE id = 1234
RETURNING id, name, salary;

これは、確認のため非常に便利です。

一般的なUPDATEメソッド

以下は、PostgreSQLにおける一般的なUPDATEメソッドの表です:

メソッド 説明
基本的なUPDATE 全ての行または条件を満たす行に対して指定されたカラムを更新 UPDATE employees SET salary = 50000 WHERE department = 'IT'
計算を使用したUPDATE カラムの現在値に基づいて更新 UPDATE products SET price = price * 1.1
サブクエリを使用したUPDATE サブクエリを使ってどの行を更新するか、またはどの値を設定するか決定 UPDATE orders SET status = 'shipped' WHERE id IN (SELECT order_id FROM shipments WHERE ship_date = CURRENT_DATE)
JOINを使用したUPDATE 他のテーブルのデータに基づいて更新 UPDATE employees e SET salary = e.salary * 1.1 FROM departments d WHERE e.dept_id = d.id AND d.name = 'Sales'
CASEを使用したUPDATE 条件付きのロジックを使用して更新 UPDATE employees SET bonus = CASE WHEN sales > 10000 THEN 1000 ELSE 500 END

これらのメソッドにはそれぞれの用途があり、PostgreSQLに慣れるに連れて、どのメソッドを使うかの直感がつかめるようになります。

結論

そして、皆さん!UPDATEクエリの世界への初めての一歩を踏み出しました。強力なツールを使う以上、責任も伴います。WHERE句を確認してから実行ボタンを押すことを忘れないでください!

練習は完璧を生みますので、テストデータベースを設定してこれらのクエリを試してみてください。そのうち、プロのようにデータを更新できるようになるでしょう!

快適なクエリライフを送り、データベースが常に完璧な状態でありますように!

Credits: Image by storyset