SQLのORDER BY句を使ったデータのソート方法や応用テクニックを詳しく解説します。効率的なデータ管理のためのソートとは何か、その重要性とは?
SQLのUPDATE文とデータ変更の基本から応用まで解説
SQLのデータ更新について、基本的なUPDATE文の使い方から、複数テーブルの更新、パフォーマンス最適化まで詳しく解説します。実務で本当に使える技術とは?
UPDATE文の基本的な構文について説明します。以下のような形式で記述します:
UPDATE テーブル名
SET カラム名1 = 値1, カラム名2 = 値2
WHERE 条件式
具体例として、社員テーブルの給与を更新する場合:
UPDATE employees
SET salary = 350000
WHERE department_id = 10
複数のテーブルを結合して更新を行う方法を紹介します。
UPDATE 主テーブル
JOIN 参照テーブル ON 主テーブル.id = 参照テーブル.id
SET 主テーブル.カラム = 参照テーブル.カラム
WHERE 条件式
実践的な例として、売上実績に応じて社員の給与を更新する場合:
UPDATE employees e
JOIN sales s ON e.employee_id = s.employee_id
SET e.salary = e.salary * 1.1
WHERE s.achievement_rate >= 100
データの整合性を保ちながら更新を行うためのテクニックを紹介します:
BEGIN TRANSACTION
UPDATE accounts SET balance = balance - 1000 WHERE account_id = 1
UPDATE accounts SET balance = balance + 1000 WHERE account_id = 2
COMMIT
UPDATE inventory
SET stock_quantity = stock_quantity - @order_quantity
WHERE product_id = @product_id
AND stock_quantity >= @order_quantity
大量データの更新時のパフォーマンスを向上させるテクニックを解説します:
UPDATE products
SET price = price * 1.05
WHERE product_id BETWEEN 1000 AND 2000
CREATE INDEX idx_last_update ON products(last_update_date)
UPDATE products
SET status = 'inactive'
WHERE last_update_date < DATEADD(month, -6, GETDATE())
データ更新の履歴を管理する方法について説明します:
CREATE TRIGGER tr_update_audit
ON employees
AFTER UPDATE
AS
BEGIN
INSERT INTO employee_audit (
employee_id,
changed_field,
old_value,
new_value,
change_date
)
SELECT
i.employee_id,
'salary',
d.salary,
i.salary,
GETDATE()
FROM inserted i
JOIN deleted d ON i.employee_id = d.employee_id
WHERE i.salary <> d.salary
END
データベースの変更履歴を管理することで、以下のメリットがあります: