MySQL テーブル削除操作の実装 (delete、truncate、drop の違い)

MySQL テーブル削除操作の実装 (delete、truncate、drop の違い)

この記事では主に、MySQL でテーブルを削除する 3 つの操作、つまり delete ステートメント、truncate ステートメント、drop ステートメントの違いについて説明します。

導入

消去

1. テーブル全体のデータを削除します。

table_name から削除します。

2. 一部のデータを削除し、where 句を追加します。

table_name から削除...;

3. 説明

1) DML 言語に属します。行が削除されるたびに、削除された行ごとにトランザクション ログにエントリが記録されます。ロールバックはトランザクションがコミットされた後にのみ生成され、有効になります。対応するトリガーがある場合は、実行中にトリガーされます。大量のデータを含むテーブルを削除すると、速度が非常に遅くなります。
2) テーブル構造(定義)を削除せずに、スペースを解放せずにテーブル内のデータを削除します。

切り捨てる

1. テーブルを操作して、テーブル内のすべてのデータを削除することしかできません。その機能は、where 句のない delete ステートメントと同じです。

テーブル table_name を切り捨てます。

2. 説明

1) デフォルトでは、truncate はテーブル データの格納に使用されたデータ ページを解放することによってデータを削除し、ページの解放のみをトランザクション ログに記録します。したがって、システムおよびトランザクション ログ リソースの使用量が減り、ストレージを再利用できます。切り捨てにより、ハイ ウォーターマークがリセットされます (最初に戻ります)。
2) Truncate は DDL 言語です。操作はすぐに有効になり、自動的にコミットされます。元のデータはロールバック セグメントに配置されず、ロールバックできません。この操作はトリガーをトリガーしません。
3) コンテンツを削除してスペースを解放しますが、テーブル構造 (定義) は削除しないでください。

落とす

1. DROP ステートメントは、テーブル構造だけでなく、従属する制約、トリガー、インデックスも削除します。

テーブル table_name を削除します。

2. 注意 1) 削除後、テーブルに依存するストアド プロシージャ/関数は保持されますが、無効になります。
2) ドロップも DDL 言語に属し、即時実行され、実行速度が最も速くなります。3) コンテンツと定義を削除して、スペースを解放します。

違い

1. テーブルとインデックスが占めるスペース:
テーブルが TRUNCATE されると、テーブルとインデックスが占めていたスペースは元のサイズに復元されます。
DELETE 操作では、テーブルまたはインデックスによって占有されるスペースは削減されません。
DROP ステートメントは、テーブルが占有しているすべてのスペースを解放します。

2. 適用範囲:
TRUNCATE はテーブルに対してのみ実行できます。
DELETE はテーブルまたはビューにすることができます。

3. 実行速度: drop > truncate > delete

4. 空のテーブルを削除した後、delete from では空のページが保持され、truncate ではテーブルにページは残りません。

5. DELETE 文を実行するプロセスは、テーブルから 1 行ずつ削除し、同時に行の削除操作をトランザクション レコードとしてログに保存してロールバック操作を行います。

TRUNCATE TABLE は、個々の削除操作をログに記録せずに、テーブルからすべてのデータを一度に削除します。削除された行は回復できません。また、削除プロセス中は、テーブルに関連する削除トリガーはアクティブ化されません。実行速度が速い。

6. 行ロックを使用して DELETE ステートメントを実行すると、テーブル内の各行が削除のためにロックされます。 truncate は常にテーブルとページをロックし、個々の行はロックしません。

7. ID によって生成された自動増分 ID 列がある場合、削除後も最後の番号から増加します。つまり、シードは変更されません。

切り捨てを使用して削除した後、シードは初期値に復元されます。

要約する

1. delete ステートメントでは where 句を使用して部分的な削除を実行できますが、truncate では実行できないため、テーブル内のすべてのデータが削除されます。使用時には、必要に応じて選択できます。
2. テーブルからすべてのデータを削除する場合は、delete ではなく、truncate ステートメントを使用します。truncate ステートメントの方が実行速度が速くなります。 truncate ステートメントは、実際には元のテーブルを削除してから新しいテーブルを作成します。
3. バックアップがない場合は、ドロップと切り捨てを慎重に使用してください。テーブル構造を削除するには、drop を使用します。
4. FOREIGN KEY 制約によって参照されるテーブルの場合、TRUNCATE TABLE は使用できません。代わりに、WHERE 句のない DELETE ステートメントを使用する必要があります。 TRUNCATE TABLE はログに記録されないため、トリガーをアクティブ化できません。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL の DROP、TRUNCATE、DELETE の違いについて詳しく説明します。MySQL をゼロから実装します。
  • SQL Server での drop、truncate、delete ステートメントの使用
  • ドロップ、切り捨て、削除の違い
  • データベース内の Drop、Delete、Truncate ステートメントの類似点と相違点の比較 (例付き)
  • SQL の drop、delete、truncate の類似点と相違点の詳細な説明
  • テーブルを削除するいくつかの方法(削除、ドロップ、切り捨て)の簡単な分析
  • MySQL の drop、truncate、delete の違いの詳細な分析

<<:  ルート変更を監視するJavaScriptの詳細な説明

>>:  Eclipse と IDEA 用に Tomcat サーバーを構成する方法

推薦する

img usemap 属性 中国地図リンク

HTML img タグ: Web ページに導入される画像を定義します。興味深い usemap 属性も...

Portainer を使用した Docker コンテナのデプロイのプロジェクト実践

目次1. 背景2. 操作手順3. Portinerをインストールする3.1 Dockerのデプロイメ...

nginx + セカンダリドメイン名 + https サポートを使用する

ステップ1: Alibaba Cloudプライマリドメイン名にセカンダリドメイン名を追加する2 番目...

MySQL が外部キーを作成できない理由と解決策

2 つのテーブルを関連付けるときに、外部キーを作成できませんでした。このブログから、問題は、ポイント...

リンクをクリックしたときに表示される点線のボックスを削除するいくつかの方法

削除する方法はいくつかあります:リンクを直接追加するonfocus="this.blur(...

alpineをベースにdockerfileで作成したtomcatイメージの実装

1.アルパインイメージをダウンロードする [root@docker43 ~]# docker pul...

MySQL のデータ削除とデータ テーブル メソッドの例

MySQL でデータやテーブルを削除するのは非常に簡単ですが、削除するとすべてのデータが消えてしまう...

MySql データベースにリモートでログインするにはどうすればよいですか?

はじめに: プロジェクトを開発するために、サーバーに MySql データベース サーバーを展開し、ロ...

Tencent Cloud Server Tomcat ポートにアクセスできない場合の解決策

最近、Tencent Cloudを使用してサーバーを設定しました。使用中に、tomcatポートにアク...

Linux システム (Centos6.5 以上) のインストール JDK チュートリアル分析

記事の構成1. 準備2. Java JDK8.0をインストールする3. 環境変数を設定する3. イン...

WeChatアプレットは画像コントロールを選択します

この記事の例では、WeChatアプレットで画像コントロールを選択するための具体的なコードを参考までに...

XHTML 入門チュートリアル: テキストの書式設定と特殊文字

<br />このセクションでは、XHTML でテキストの書式設定と特殊文字を実装する方法...

docker-compose ネットワーク設定についての簡単な説明

ネットワーク使用チュートリアル公式サイト docker-compose.yml リファレンスドキュメ...

CSS3 テキストシャドウ text-shadow プロパティの詳細な説明

テキストシャドウ text-shadow プロパティの効果: 1. 右下隅の影、左下隅の影、左上隅の...

CentOS に MySQL 8.0 をインストールして設定するための詳細な手順

序文CentOS に MySQL をインストールして設定する手順は次のとおりです。文章yumソースか...