DELETE (SQL)

SQLの`DELETE`ステートメントは、データベース内のデータを操作するDML(データ操作言語)の一つであり、テーブルからレコードを削除するために使用されます。このステートメントには、大きく分けて2つの使い方があります。

一つは、`WHERE`句を使って条件を指定し、その条件に一致する特定のレコードのみを削除する方法です。例えば、`DELETE FROM テーブル名 WHERE 条件式;` のように記述します。この場合、条件式に合致するレコードだけが削除され、他のレコードには影響がありません。条件式には、比較演算子や論理演算子などを用いて、柔軟な削除条件を設定できます。

もう一つは、`WHERE`句を省略し、テーブル内のすべてのレコードを一括で削除する方法です。この場合、`DELETE FROM テーブル名;` のように記述します。この操作は、テーブル内のデータを完全に消去するため、実行には注意が必要です。

`DELETE`ステートメント実行時には、副問い合わせを使用することで、削除対象以外のテーブルを参照することも可能です。また、データベースによっては、`USING`や追加の`FROM`句を使用することで、参照するテーブルを明示的に指定できる場合もあります。これにより、より複雑な削除操作を柔軟に行うことが可能になります。

また、`DELETE`ステートメントは、データベーストリガーと連携して、他のテーブルのレコードを自動的に削除することができます。例えば、外部キー制約で関連付けられた2つのテーブルがある場合、一方のテーブルでレコードが削除されると、トリガーにより、関連するもう一方のテーブルのレコードも自動的に削除されます。これにより、データベース全体の整合性が保たれます。

ただし、テーブル内のすべてのレコードを削除する場合には、一般的に`DELETE`ステートメントよりも、`TRUNCATE TABLE`ステートメントの方が高速に処理できます。`TRUNCATE TABLE`は、テーブルの構造を残したまま、すべてのレコードを削除する操作であり、ログの記録を省略できるため、削除処理のパフォーマンスが向上します。

以下に、具体的な`DELETE`ステートメントの例を示します。

  • - テーブル `pies` から、`flavour` カラムの値が `'Lemon Meringue'` であるレコードを削除する場合:
sql
DELETE FROM pies WHERE flavour = 'Lemon Meringue';


  • - テーブル `mytable` から、`mycol` カラムの値が `100` より大きいレコードを削除する場合:
sql
DELETE FROM mytable WHERE mycol > 100;


  • - テーブル `mytable` のすべてのレコードを削除する場合:
sql
DELETE FROM mytable;


このように、`DELETE`ステートメントはSQLにおいて、データベースのデータを操作するための重要な役割を担っています。データの削除は、データベースの保守や運用において、不可欠な操作であるため、`DELETE`ステートメントの正しい理解と適切な使用が求められます。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。