DELETE クエリ
DELETE クエリは、記録されたテーブルの行データを削除するためのコマンドです。SQLの基本となるコマンドのひとつです。
基本的には WHERE 句を使って特定の行を削除するようにします。WHERE 句で行を指定しないとすべて削除してしまうので十分に注意してください。
間違って削除してしまわないように ROLLBACK といった対処方法があります。ただし、ROLLBACK するためにはポイントを設定しておく必要がありますので、やはり削除には十分に注意してください。
バックアップなどの事前対処をしておいたほうが無難でしょう。
この例は table_name というテーブルに記録されている WHERE で抽出した行を削除します。
クエリとは、問い合わせ
を意味し、データベースではデータの検索( SELECT )、入力( INSERT )、更新( UPDATE )、削除( DELETE )といった命令をサーバーに送る行為を指します。
クエリには、作成( CREATE )、変更( ALTER )、削除( DROP )も含みます。
構文(Syntax)
DELETE 文はデータベースに記録されたデータを削除する SQL 文です。
通常は WHERE によって特定のデータを削除するようにします。
データベースによって DELETE の仕様は異なります。
MySQL
MySQL での DELETE 文は以下のような仕様になっています。
PostgreSQL
PostgreSQL では以下のうような仕様になっています。
句について
DELETE 文はいくつかの句で構成されています。例えば以下のような句があります。
句
はデータベースによって節
、文節
とも呼ばれます。Oracle では節
、MySQLやPostgreSQL では句
と呼ばれることが多いようです。
このサイトでは句
と呼ぶようにしています。
DELETE 句
簡単な DELETE 文は、以下のように削除するデータがあるテーブルを指定した SQL 文です。
ただし、WHERE 句がないと全てのデータを削除してしまいますので十分に注意してください。
特に既にデータがある場合は十分注意してください。すべてのデータを削除してしまいます。データが戻せるように、ロールバックポイントを作成しておいた方がよいでしょう。
例えば、以下のような sales_slip テーブルの 指定した id の date_time を現在の日時に変更するには以下のようにします。
DELETE されているかを確かめるには SELECT クエリを実行します。
ここの例で主に使用しているデータはテーブル
ページの外部キー制約( FOREIGN KEY )
の作成例です。
以下のようなデータを使用しています。
WHERE 句
条件を指定して検索して取得する場合は WHERE 句を加えます。
上記の例は id が 100 以下のレコードを検索して削除します。
LIMIT 句
LIMIT 句は、検索されたレコードから指定された数の行のみを削除します。
上記の例では、検索された順で 2 行までを削除対象とします。レコードが 2 行に満たない場合は検索されたすべての行を削除します。
取得する行数の開始位置は OFFSET 句で指定します。例えば、2 行目から 4 行分を取得するには以下のようにします。