\r\n\r\n
削除と切り捨て
Drop と Truncate は、データベース管理システムで使用される 2 つの SQL (Structured Query Language) 文で、データベースからデータレコードを削除したい場合に使用します。Drop と Truncate 文は両方とも、テーブルと関連 SQL 文内のデータ全体を削除します。この場合、Delete操作はDropやTruncateよりも多くの記憶容量を消費するため、有効ではありません。
データベース内のテーブルとそのデータをすべて削除したい場合、SQL では、既存のデータベース、テーブル、インデックス、またはビューを破棄するために使用できる DDL (Data Definition Language) コマンドである Drop 文を使用して、この操作を簡単に実行することができます。データベースからテーブル構造だけでなく、テーブルからすべての情報を削除します。あるいは、単純にテーブルのデータをすべて削除したいが、テーブルを削除したくない場合、SQL の Truncate ステートメントを使用することができます。
ドロップコマンド
前述のように、Dropコマンドは、特定のテーブルに作成されたテーブル定義とそのデータ、整合性制約、インデックス、トリガー、アクセス権をすべて削除します。その結果、既存のオブジェクトをデータベースから完全に削除し、他のテーブルとのリレーションシップもコマンド実行後は無効となります。また、データディクショナリーからテーブルに関するすべての情報が削除されます。以下は、テーブルに対して Drop ステートメントを使用する場合の典型的な構文です。
フォームを削除する < フォーム名>.
上記のDropコマンドの例で、データベースから削除するテーブルの名前を置き換えるだけです。
注意すべきは、Dropステートメントは、外部キー制約によって参照されているテーブルを削除するためには使用できないということです。この場合、参照される外部キー制約またはその特定のテーブルのいずれかを最初に削除する必要があります。また、Drop文はデータベースのシステムテーブルには適用できません。
Dropコマンドは自動コミット文であるため、一度操作するとロールバックできず、トリガーも発生しません。テーブルが削除されると、そのテーブルへの参照はすべて無効になるため、再び使用する場合は、すべての整合性制約とアクセス権で再作成する必要があります。他のテーブルとの関係もすべて再配置する必要があります。
切り捨てコマンド
Truncateコマンドは、ユーザが指定した条件を使用せずにテーブルのすべての行を削除し、テーブルが使用している領域を解放するDDLコマンドですが、テーブル構造とその列、インデックス、制約は変更されません。 truncateは、テーブルデータを格納するために使用されているデータページの割り当てを解除してテーブルからデータを削除し、それらのページリリースだけがトランザクションログに保持されます。その結果、Delete などの他の関連する SQL コマンドよりも、トランザクションログのリソースやシステムリソースの使用量が少なくて済みます。だから、Truncate文は他の文より少し速いのです。以下は、Truncate コマンドの典型的な構文です。
フォームの切り捨て < フォーム名>.
データ全体を削除したいテーブルの名前を上記の構文に置き換える必要があります。
Truncateは、外部キー制約によって参照されているテーブルでは使用できません。それは自動的に操作の前に1回コミットし、その後もう1回コミットするため、トランザクションのロールバックは不可能で、トリガーも発生しません。テーブルを再利用したい場合は、データベース内の既存のテーブル定義にアクセスすればよい。
DropとTruncateの違いは何ですか?
DropコマンドとTruncateコマンドは、DDLコマンドであり、自動コミット文でもあるため、これらのコマンドで実行されたトランザクションをロールバックすることはできません。
Drop と Truncate の主な違いは、Drop コマンドはテーブルからすべてのデータを削除するだけでなく、すべての参照を含むテーブル構造をデータベースから永久に削除するのに対し、Truncate コマンドはテーブルのすべての行を削除するだけで、テーブル構造とその参照は保持されることです。
テーブルが削除されると、他のテーブルとの関係は無効となり、整合性制約やアクセス権も削除されます。したがって、テーブルを再利用する必要がある場合は、関係、整合性制約、アクセス権を使用してテーブルを再構築する必要があります。しかし、テーブルが切り捨てられたとしても、テーブルの構造とその制約は将来の使用のために保持されるので、再利用には上記のような再作成は必要ない。