コンテンツ
主な違い
DELETEとTRUNCATEは、構造化照会言語(SQL)で使用される2つの用語で、テーブルからレコードまたはデータを削除します。両方のコマンドの最終結果は同じですが、理解することが重要なこれらの2つの間にいくつかの違いもあります。 DELETEとTRUNCATEの主な違いは、DELTEはデータ操作言語(DML)コマンドであり、TRUNCATEはデータ定義言語(DDL)コマンドであるということです。
TRUNCATEとは何ですか?
TRUNCATEもログに記録された操作です。 TRUNCATE TABLEステートメントは、SQLのDDLコマンドであり、割り当て解除のためにテーブルの範囲をマークします。この操作の結果、テーブルからすべてのデータが即座に削除されます。通常、多くの整合性強制メカニズムがバイパスされます。 SQL:2008標準で導入されました。 「TRUNCATE TABLE mytable」ステートメントは、「WHERE」句のない「DELETE FROM mytable」ステートメントと論理的に同等です。 「TRUNCATE TABLE」は、テーブルで使用されているデータページの割り当てを解除することにより、テーブル内のすべてのデータを即座に削除します。これにより、削除を記録するリソースのオーバーヘッドと、必要なロックの数が削減されます。 「TRUNCATE TABLE」ステートメントで「WHERE」句を指定することはできません。すべてまたは何もないためです。
DELETEとは
データベースSQLでは、DELETEは1つ以上のレコードまたはデータをテーブルから削除するステートメントを意味します。すべてのレコードを削除する条件を使用して、削除/削除のサブセットを定義できます。 MySQLなどの一部のデータベース管理システム(DBM)では、マルチテーブルDELETEとも呼ばれる1つのDELETEステートメントを使用して、さまざまなテーブルから行を削除できます。 DELETEステートメントの構文はDELETE FROMです テーブル名 。これで、「WHERE」条件に一致するすべての行がテーブルから削除されます。 「WHERE」句がステートメントから省略されている場合、テーブル内のすべての行が削除されます。そのため、「DELETE」ステートメントは注意して使用する必要があります。さらに、「DELETE」ステートメントは行を返しません。つまり、結果セットは生成されません。
主な違い
- DELETEはデータ操作言語(DML)コマンドであり、TRUNCATEはデータ定義言語(DDL)コマンドです。
- TRUNCATEは、すべてのデータを即座に消去するため、DELETEと比較してはるかに高速です。
- DELETEでは「WHERE」条件が必要です。 。 「WHERE」句がステートメントから省略されている場合、テーブル内のすべての行が削除されます。ただし、「TRUNCATE TABLE」ステートメントで「WHERE」句を指定することはできません。すべてまたは何もないためです。
- DELETEはテーブルから一部またはすべての行を削除し、TRUNCATEはすべての行を削除します。
- DELETEは、テーブルのすべてのDELETEトリガーを起動しますが、個々の行には適用できないため、TRUNCATE操作中にトリガーは起動されません。
- インデックス付きビューでは削除を使用できますが、インデックス付きビューではTRUNCATEを使用できません。
- DELETEは行ロックを使用して実行され、テーブルの各行は削除のためにロックされ、TRUNCATEはテーブルロックを使用して実行され、すべてのテーブルはすべてのレコードを削除するためにロックされます。