MySQL には、delete、truncate、drop の 3 つの削除方法があり、それぞれの使い方や利用シーンが全く異なりますので、詳しく見ていきましょう。
detele は、テーブル内の一部またはすべてのデータを削除するために使用できます。その使用構文は次のとおりです:
delete from table_name [where...] [order by...] [limit...]
PS: [] 内のコマンドはオプションであり、省略できます。
学生テーブルで数学の得点が最も高い上位 3 人の学生を削除する場合は、次の SQL を使用できます:
delete from student order by math desc limit 3;
InnoDB エンジンでは、削除操作は実際にはデータを削除しませんが、データに削除対象のマークを付け、削除済みとしてマークします。これは、MySQL を非自動送信モードに設定することでテストできます。それ。 非自動コミットモードの設定 SQL は次のとおりです:
set autocommit=0;
その後、まずデータを削除し、次にロールバック操作を使用し、最後に以前に削除したデータがまだ存在するかどうかを確認します。削除は実際にデータを削除するわけではなく、データに削除済みのマークを付けるだけであることに注意してください。検証 SQL と実行結果は次の図に示すとおりです。 ##1.2 自動インクリメント列について
InnoDB エンジンでは、delete を使用してすべてのデータを削除した後、自動インクリメント列は初期値にリセットされません。次のコマンド:
truncate [table] table_name
2.1 実装原則truncate
truncate は行データを削除するだけのように見えますが、これはデータ定義言語である DDL ステートメントであり、格納されたデータの構造指示を維持するために使用されるため、削除とは異なります。コマンド。削除ステートメントは DML (データ操作言語) に属し、データを操作するために使用されます。 DDL 言語であるにもかかわらず、truncate では行データのみが削除され、列データ (フィールド、インデックスなど) は削除されないのはなぜですか? これは、truncate は基本的に新しいテーブル構造を作成してから元のテーブルを削除するため、DML 言語ではなく DDL 言語に属するためです。
drop は、テーブルの行データのみを削除する最初の 2 つのコマンドとは異なります。drop はテーブルの行データを削除します。テーブル全体とテーブル構造をまとめたもので、その構文は次のとおりです:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [,tbl_name]
ここで、TEMPORARY は一時テーブルを意味します。通常の状況では、このコマンドは無視されます。
#3 つの違いデータ回復: 削除では削除されたデータを回復できますが、切り捨てとドロップでは削除されたデータを回復できません。
delete と truncate はテーブル内の行データを削除するために使用でき、drop はテーブル全体を削除します。削除されたデータにはすべての行データが含まれます、フィールド、インデックス、その他のデータ。delete で削除されたデータは回復できますが、truncate とdrop は回復できません。ただし、実行効率の観点からは、後者の 2 つの削除方法に大きな利点があるため、実際のシナリオに基づいて行う必要があります。対応する削除コマンドを選択するには、もちろん、回復不可能なデータ削除方法である truncate とdrop を使用する場合にも注意が必要です。
[関連する推奨事項: mysql ビデオ チュートリアル ]
以上がMySQL の削除方法の簡単な分析: 削除、切り捨て、ドロップの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。