ドロップと切り捨て

ドロップと切り捨ては、データベースからデータレコードを削除するデータベース管理システムで使用される2つのSQL(構造化照会言語)ステートメントです。 DropステートメントとTruncateステートメントはどちらも、テーブル内のデータ全体と関連するSQLステートメントを削除します。 この場合、削除操作はDrop and Truncateよりも多くのストレージスペースを使用するため、効果的ではありません。

データベースのテーブルをすべてのデータとともに完全に破棄する場合、SQLではDropステートメントを使用してこれを簡単に実行できます。 ドロップコマンドはDDL(データ定義言語)コマンドであり、既存のデータベース、テーブル、インデックス、またはビューを破棄するために使用できます。 データベースからテーブル構造だけでなく、テーブル内の情報全体を削除します。 また、テーブル内のすべてのデータを単純に削除したい場合がありますが、このようなシナリオではSQLでTruncateステートメントを使用できます。 TruncateもDDLコマンドであり、テーブル内のすべての行を削除しますが、将来の使用のためにテーブル定義を保持します。

ドロップコマンド

前述のように、Dropコマンドは、テーブル定義と、その特定のテーブルで作成されたすべてのデータ、整合性制約、インデックス、トリガー、およびアクセス権限を削除します。 そのため、既存のオブジェクトをデータベースから完全に削除し、他のテーブルとの関係もコマンドの実行後に無効になります。 また、データディクショナリからテーブルに関するすべての情報を削除します。 以下は、テーブルでDropステートメントを使用するための一般的な構文です。

ドロップテーブル

上記のDropコマンドの例では、データベースから削除するテーブル名を単純に置き換える必要があります。

Dropステートメントを使用して、外部キー制約によって既に参照されているテーブルを削除することはできないことに注意することが重要です。 その場合、参照する外部キー制約、またはその特定のテーブルを最初に削除する必要があります。 また、データベース内のシステムテーブルにDropステートメントを適用することはできません。

Dropコマンドは自動コミットステートメントであるため、一度起動された操作はロールバックできず、トリガーは起動されません。 テーブルが削除されると、テーブルへのすべての参照が無効になるため、テーブルを再度使用する場合は、すべての整合性制約とアクセス権限を使用してテーブルを再作成する必要があります。 他のテーブルとのすべての関係も、再度配置する必要があります。

切り捨てコマンド

TruncateコマンドはDDLコマンドであり、ユーザーが指定した条件なしでテーブル内のすべての行を削除し、テーブルで使用されていたスペースを解放しますが、カラム、インデックス、制約のあるテーブル構造は同じままです。 切り捨ては、テーブルデータの格納に使用されるデータページの割り当てを解除することでテーブルからデータを削除し、これらのページの割り当て解除のみがトランザクションログに保持されます。 そのため、Deleteなどの他の関連SQLコマンドと比較して、使用するトランザクションログリソースとシステムリソースが少なくなります。 したがって、Truncateは他のステートメントよりも少し速いステートメントです。 Truncateコマンドの一般的な構文は次のとおりです。

テーブルの切り捨て

上記の構文で、データ全体を削除するテーブル名を置き換える必要があります。

Truncateは、外部キー制約によって参照されているテーブルでは使用できません。 動作する前に自動的にコミットを使用し、その後に別のコミットを使用するため、トランザクションのロールバックは不可能であり、トリガーは起動されません。 テーブルを再利用する場合は、データベース内の既存のテーブル定義にアクセスするだけです。

ドロップと切り捨ての違いは何ですか?

DropコマンドとTruncateコマンドはどちらもDDLコマンドであり、自動コミットステートメントであるため、これらのコマンドを使用して実行されたトランザクションはロールバックできません。

DropとTruncateの主な違いは、Dropコマンドはテーブル内のすべてのデータを削除するだけでなく、すべての参照を含むデータベースからテーブル構造を永久に削除しますが、Truncateコマンドはテーブル内のすべての行のみを削除することです、テーブル構造とその参照を保持します。

テーブルが削除されると、他のテーブルとの関係が無効になり、整合性制約とアクセス権限も削除されます。 そのため、テーブルを再利用する必要がある場合は、関係、整合性制約、およびアクセス権限を使用してテーブルを再構築する必要があります。 ただし、テーブルが切り捨てられた場合、テーブル構造とその制約は将来の使用に備えて保持されるため、上記の再作成は再利用には必要ありません。

これらのコマンドが適用されるとき、それらを使用するように注意する必要があります。 また、これらのコマンドの性質、それらがどのように機能するかについての理解を深める必要があります。また、必要なものが欠落しないように、コマンドを使用する前に慎重に計画する必要があります。 最後に、これらのコマンドの両方を使用して、データベースを迅速かつ簡単にクリーンアップし、より少ないリソースを消費できます。