SQL ServerのUPDATE文の使い方をマスターしよう!

UPDATE文は、SQL Serverで既存のデータを変更するためのSQL文です。

例えば、顧客の連絡先情報が変更された場合や商品の在庫を調整する際に使います。

正確な構文と条件設定が必要で、誤って実行すると意図しないデータが更新される可能性があるため注意が必要です。


UPDATE文の基本構文

まずは、UPDATE文の基本的な書き方から確認しましょう。

UPDATE テーブル名
SET カラム名 = 新しい値
WHERE 条件;

例: Employeesテーブルのsalary列の値を更新する場合

UPDATE Employees
SET salary = 50000
WHERE employee_id = 1;

この例では、employee_idが1の従業員の給与が50,000に更新されます。


WHERE句を使ったレコードの条件付き更新

WHERE句を使うことで、特定の条件に一致するレコードだけを更新します。

もしWHERE句を指定しない場合、全てのレコードが対象になるので注意が必要です。

UPDATE Products
SET price = 1500
WHERE product_id = 101;

この例では、product_idが101の商品の価格が1,500に更新されます。


複数カラムの同時更新

複数の列を同時に更新することも可能です。

UPDATE Employees
SET salary = 60000, department = 'Sales'
WHERE employee_id = 2;

この例では、employee_idが2の従業員の給与と部署が一度に更新されます。


JOINを使った複数テーブルの更新

他のテーブルと結合(JOIN)することで、複数のテーブルを基にした更新も可能です。

UPDATE A
SET A.salary = B.new_salary
FROM Employees A
JOIN SalaryUpdates B ON A.employee_id = B.employee_id
WHERE B.update_flag = 1;

この例では、SalaryUpdatesテーブルの情報を使ってEmployeesテーブルの給与を更新しています。


CASE式を使った条件ごとの更新

CASE文を使うと、条件ごとに異なる値を設定することができます。

UPDATE Employees
SET salary = 
    CASE 
        WHEN position = 'Manager' THEN 80000
        WHEN position = 'Staff' THEN 50000
        ELSE 40000
    END;

この例では、従業員の役職に応じて給与が設定されます。


UPDATEでの注意点

  • バックアップを取る: 更新によってデータが失われることを防ぐため、操作前にバックアップを取りましょう。
  • WHERE句を忘れない: 条件を指定しないと、全てのレコードが更新されます。
  • テスト環境で試す: 実際のデータベースに対して更新を行う前に、テスト環境での確認をおすすめします。

演習問題

以下の演習問題に挑戦してみましょう。

問題1: 基本的なUPDATE文

Productsテーブルのpriceが2000円未満の商品に対して、価格を一律2500円に更新してください。

問題2: 複数カラムの同時更新

Employeesテーブルで、employee_idが5の従業員の給与を60,000円、部署を「Marketing」に変更してください。

問題3: JOINを使ったUPDATE文

OrderDetailsテーブルのquantityを、Stockテーブルの在庫情報に基づいて更新します。product_idが一致する場合、StockテーブルのquantityをOrderDetailsに反映してください。

問題4: CASEを使った条件付き更新

Employeesテーブルで、従業員の役職に応じて以下のように給与を設定してください。

  • マネージャー: 90,000円
  • スタッフ: 55,000円
  • それ以外: 45,000円

解答例

解答1: 基本的なUPDATE文

UPDATE Products
SET price = 2500
WHERE price < 2000;

解答2: 複数カラムの同時更新

UPDATE Employees
SET salary = 60000, department = 'Marketing'
WHERE employee_id = 5;

解答3: JOINを使ったUPDATE文

UPDATE O
SET O.quantity = S.quantity
FROM OrderDetails O
JOIN Stock S ON O.product_id = S.product_id;

解答4: CASEを使った条件付き更新

UPDATE Employees
SET salary = 
    CASE 
        WHEN position = 'Manager' THEN 90000
        WHEN position = 'Staff' THEN 55000
        ELSE 45000
    END;

まとめ

UPDATE文は、SQL Serverでデータを更新するための重要な文です。

基本的な使い方からJOINやCASE式を使った応用まで学ぶことで、様々な場面に対応できるようになります。

演習問題を通じて、自分で手を動かしながら理解を深めていきましょう。正しい構文と慎重な実行が、データの一貫性を守る鍵です。


この記事を参考に、SQL ServerのUPDATE文を活用して業務の効率化を目指しましょう!