MySQL の削除方法の簡単な分析: 削除、切り捨て、ドロップの違い

青灯夜游
リリース: 2022-06-08 13:49:18
転載
2434 人が閲覧しました

MySQL の削除方法の簡単な分析: 削除、切り捨て、ドロップの違い

MySQL には、delete、truncate、drop の 3 つの削除方法があり、それぞれの使い方や利用シーンが全く異なりますので、詳しく見ていきましょう。

1.delete

detele は、テーブル内の一部またはすべてのデータを削除するために使用できます。その使用構文は次のとおりです:

delete from table_name [where...] [order by...] [limit...]
ログイン後にコピー

PS: [] 内のコマンドはオプションであり、省略できます。

学生テーブルで数学の得点が最も高い上位 3 人の学生を削除する場合は、次の SQL を使用できます:

delete from student order by math desc limit 3;
ログイン後にコピー

1.1 削除の実装原則

InnoDB エンジンでは、削除操作は実際にはデータを削除しませんが、データに削除対象のマークを付け、削除済みとしてマークします。これは、MySQL を非自動送信モードに設定することでテストできます。それ。 非自動コミットモードの設定 SQL は次のとおりです:

set autocommit=0;
ログイン後にコピー

その後、まずデータを削除し、次にロールバック操作を使用し、最後に以前に削除したデータがまだ存在するかどうかを確認します。削除は実際にデータを削除するわけではなく、データに削除済みのマークを付けるだけであることに注意してください。検証 SQL と実行結果は次の図に示すとおりです。 ##1.2 自動インクリメント列について

MySQL の削除方法の簡単な分析: 削除、切り捨て、ドロップの違いInnoDB エンジンでは、delete を使用してすべてのデータを削除した後、自動インクリメント列は初期値にリセットされません。次のコマンド:

2.truncate

truncate の実行効果は delete と似ており、テーブル内のデータのすべての行を削除するためにも使用されます。使用構文は次のとおりです:

truncate [table] table_name
ログイン後にコピー
MySQL の削除方法の簡単な分析: 削除、切り捨て、ドロップの違い使用時の truncate と delete の最大の違いは、

delete は条件式を使用してデータの一部を削除できるのに対し、truncate は条件式を追加できないことです。次のようなすべての行データ

のみを削除できます。切り捨てる where コマンドを追加すると、エラーが報告されます:

2.1 実装原則truncate

MySQL の削除方法の簡単な分析: 削除、切り捨て、ドロップの違いtruncate は行データを削除するだけのように見えますが、これはデータ定義言語である DDL ステートメントであり、格納されたデータの構造指示を維持するために使用されるため、削除とは異なります。コマンド。削除ステートメントは DML (データ操作言語) に属し、データを操作するために使用されます。 DDL 言語であるにもかかわらず、truncate では行データのみが削除され、列データ (フィールド、インデックスなど) は削除されないのはなぜですか? これは、truncate は基本的に新しいテーブル構造を作成してから元のテーブルを削除するため、DML 言語ではなく DDL 言語に属するためです。

#2.2 自動インクリメント列のリセット

truncate は、次のコマンドに示すように、InnoDB エンジンの自動インクリメント列をリセットします。

#3.drop

drop は、テーブルの行データのみを削除する最初の 2 つのコマンドとは異なります。drop はテーブルの行データを削除します。テーブル全体とテーブル構造をまとめたもので、その構文は次のとおりです:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [,tbl_name]
ログイン後にコピー

MySQL の削除方法の簡単な分析: 削除、切り捨て、ドロップの違いここで、TEMPORARY は一時テーブルを意味します。通常の状況では、このコマンドは無視されます。

#drop 使用例は次のとおりです。

#3 つの違い

データ回復: 削除では削除されたデータを回復できますが、切り捨てとドロップでは削除されたデータを回復できません。

MySQL の削除方法の簡単な分析: 削除、切り捨て、ドロップの違い

実行速度: ドロップ > トランケート > 削除。

    データの削除に関して: ドロップは行データ、フィールド、インデックス、その他のデータを含むテーブル全体を削除しますが、切り捨てとドロップは行データのみを削除します。
  • 条件の追加に関して: delete では where 式を使用してクエリ条件を追加できますが、truncate とdrop では where クエリ条件を追加できません。
  • 自動インクリメント列のリセット: InnoDB エンジンでは、truncate で自動インクリメント列をリセットできますが、delete では自動インクリメント列をリセットできません。

概要

delete と truncate はテーブル内の行データを削除するために使用でき、drop はテーブル全体を削除します。削除されたデータにはすべての行データが含まれます、フィールド、インデックス、その他のデータ。delete で削除されたデータは回復できますが、truncate とdrop は回復できません。ただし、実行効率の観点からは、後者の 2 つの削除方法に大きな利点があるため、実際のシナリオに基づいて行う必要があります。対応する削除コマンドを選択するには、もちろん、回復不可能なデータ削除方法である truncate とdrop を使用する場合にも注意が必要です。

[関連する推奨事項: mysql ビデオ チュートリアル ]

以上がMySQL の削除方法の簡単な分析: 削除、切り捨て、ドロップの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート