危険なSQL操作チェックリスト:UPDATE / DELETE / DROPの前に見る表

入門 | 8分 で読める | 2026.06.17

公式ドキュメント

概要

このチートシートでは、データを壊す可能性があるSQL操作と、実行前の確認項目をまとめます。

変更・削除・構造変更のSQLは、実行前に接続先、対象、件数、戻し方を確認します。

最初に確認する4点

確認内容
接続先本番DBではないか、対象DBは正しいか
対象どのテーブル・どの行に影響するか
件数何件変わるか
戻し方ROLLBACK、バックアップ、復旧手順があるか

危険度の高いSQL

SQL危険な理由実行前にすること
UPDATE多数の行を書き換える同じWHEREでSELECT
DELETE行を削除する対象件数をCOUNT
TRUNCATE全行を高速削除するバックアップ確認
DROP TABLEテーブル自体を削除する本当に不要か確認
DROP DATABASEDB全体を削除する原則として手順化
ALTER TABLE構造を変える影響範囲とロック確認

UPDATE前チェック

SELECT COUNT(*)
FROM users
WHERE active = false;

対象件数を確認してから更新します。

UPDATE users
SET archived = true
WHERE active = false;

UPDATEはWHEREがないと全行更新になるため、WHERE句の有無を最初に見ます。

DELETE前チェック

削除対象を先に確認します。

SELECT id, email
FROM users
WHERE deleted_at IS NOT NULL;

件数も確認します。

SELECT COUNT(*)
FROM users
WHERE deleted_at IS NOT NULL;

その後に削除します。

DELETE FROM users
WHERE deleted_at IS NOT NULL;

トランザクション確認

不安な変更は、トランザクション内で確認します。

BEGIN;

UPDATE users
SET active = false
WHERE id = 1;

SELECT id, active
FROM users
WHERE id = 1;

ROLLBACK;

問題なければ、別途 COMMIT します。

TRUNCATE / DROP

TRUNCATE はテーブルの全行を高速に削除します。

TRUNCATE TABLE logs;

DROP TABLE はテーブル自体を削除します。

DROP TABLE old_logs;

これらは影響が大きいため、学習環境以外では手順書、バックアップ、レビューを前提にします。

ALTER TABLE

ALTER TABLE はテーブル構造を変えます。

ALTER TABLE users
ADD COLUMN last_login_at TIMESTAMP;

本番環境では、テーブルサイズやDB製品によってロックや処理時間が問題になることがあります。

実行直前の指差し確認

項目確認
DB名想定のDBに接続している
テーブル名操作対象が正しい
WHERE条件がある、または全件対象の理由がある
件数SELECT COUNT(*) で確認済み
戻し方ROLLBACK またはバックアップがある

「たぶん大丈夫」で変更系SQLを実行しないことが、最も重要な安全対策です。

まとめ

危険なSQL操作では、接続先、対象、件数、戻し方を確認します。UPDATEDELETE は同じ条件で SELECT し、TRUNCATEDROPALTER TABLE は影響が大きいため、学習環境以外では手順化して扱います。

参考リソース

← 一覧に戻る
PR
PR
PR
PR