logo

DELETE と TRUNCATE の違い

消去 はDML(Data Manipulation Language)コマンドで、テーブルやリレーションから削除したい行(タプル)を指定するときに使用します。 DELETE コマンドには WHERE 句を含めることができます。 DELETE コマンドで WHERE 句を使用すると、条件を満たす行 (タプル) のみが削除または削除されます。それ以外の場合、デフォルトでテーブルからすべてのタプル (行) が削除されます。 DELETE は行の削除をログに記録することに注意してください。

構文:

テーブル名から削除



WHERE 条件;

SQLの主キーと複合キー

切り詰める は DDL (データ定義言語) コマンドであり、テーブルからすべての行またはタプルを削除するために使用されます。 DELETE コマンドとは異なり、TRUNCATE コマンドには WHERE句 。 TRUNCATE コマンドでは、削除された各データ ページのトランザクション ログは記録されません。 DELETE コマンドとは異なり、TRUNCATE コマンドは高速です。 TRUNCATE コマンドを使用した後はデータをロールバックできません。

構文:

TRUNCATE TABLE テーブル名;

ダミーテーブルを 1 つ作成し、削除操作を実行する簡単な例を使ってそれを理解しましょう。

クエリ:

CREATE table Employee ( Emp_id int,  name VARCHAR(20),  country VARCHAR(20),  Salary INT); --insert the data in the Employee Table INSERT INTO Employee (Emp_id, name, country, Salary) values (101, 'Mohit', 'India', 60000),  (103, 'Anish', 'England', 70000),  (104, 'Shubham', 'France', 100000),  (102, 'Danish', 'Sweden', 40000),  (105, 'Vivek', 'Wales', 50000),  (106, 'Rohan', 'Scotland', 30000);  Select * from Employee ;>

出力

従業員テーブル

従業員テーブル

削除コマンドの例:

ここで、Emp_id の値 106 を持つ最後のエントリを削除するクエリを作成する必要があります。

クエリ:

Delete from Employee where Emp_id = 106;>

出力

出力

出力

TRUNCATEコマンドの例

この場合、テーブル プレーヤーからすべてのレコードを完全に削除するには、truncate コマンドを使用します。

クエリ:

TRUNCATE TABLE Employee;>

DELETE と TRUNCATE の違い

消去 切り詰める
DELETE コマンドは、指定した行 (1 つ以上) を削除するために使用されます。 このコマンドはテーブルからすべての行を削除するために使用されます。
それは DML(データ操作言語) 指示。 それが DDL(データ定義言語) 指示。
レコードをフィルタリングするために、DELETE コマンドに WHERE 句が含まれる場合があります。 ただし、TRUNCATE コマンドには WHERE 句が存在しない場合があります。
DELETE コマンドでは、タプルは削除する前にロックされます。 このコマンドの実行中、テーブル データを削除する前にデータ ページがロックされます。
DELETE ステートメントは、行を 1 つずつ削除し、削除された行ごとにトランザクション ログにエントリを記録します。 TRUNCATE TABLE は、テーブル データの格納に使用されるデータ ページの割り当てを解除することでデータを削除し、ページの割り当て解除のみをトランザクション ログに記録します。
DELETE コマンドは TRUNCATE コマンドよりも遅くなります。 一方、TRUNCATE コマンドは DELETE コマンドよりも高速です。
削除を使用するには、テーブルに対する DELETE 権限が必要です。 テーブルで Truncate を使用するには、少なくとも必要なもの 変更 テーブル上の許可。
テーブルで DELETE ステートメントを使用した後も、少ない方の列の ID が保持されます。 ID テーブルに ID 列が含まれている場合、列はシード値にリセットされます。
削除はインデックス付きビューで使用できます。 Truncate はインデックス付きビューでは使用できません。
このコマンドはトリガーをアクティブにすることもできます。 このコマンドはトリガーをアクティブにしません。
DELETE ステートメントは、Truncate よりも多くのトランザクション スペースを占有します。 Truncate ステートメントは、DELETE よりも占有するトランザクション スペースが少なくなります。

削除操作はロールバックできます。

TRUNCATE は暗黙的なコミットを引き起こすため、ロールバックできません。

削除してもテーブル全体が DROP されるわけではありません。テーブルのロックを取得し、行の削除を開始します。

TRUNCATE は、まずテーブルを削除してからテーブルを再作成します。これは、個々の行を削除するよりも高速です。

結論

記事上で、 SQL 開発者は、DELETE および TRUNCATE コマンドを正しく使用することで、行を適切に削除できます。 TRUNCATE コマンドはテーブルのすべてのレコードを削除するため、注意して使用する必要があります。初心者は、このチュートリアルで「削除」コマンドと「切り捨て」コマンドの違いについて説明することも役立ちます。

消去:

  • 過去 6 か月間何も購入していない従業員をすべてテーブルから削除したいと考えています。
  • 従業員をテーブルから削除したいとします。

切り捨て:

  • テーブルの内容を元の状態に復元したいと考えています。
  • データを復元できる必要はありません。テーブルから完全に削除したいだけです。