MYSQL での Truncate の使用法の詳細な説明

MYSQL での Truncate の使用法の詳細な説明

この記事のガイド: テーブル内のデータを削除するには、削除と切り捨ての 2 つの方法があります。TRUNCATE TABLE は、1 行の削除を記録せずにテーブル内のすべての行を削除するために使用されます。 TRUNCATE TABLE は、WHERE 句のない DELETE ステートメントに似ていますが、TRUNCATE TABLE の方が高速で、使用するシステム リソースとトランザクション ログ リソースが少なくなります。以下はSQLにおけるTruncateの使い方について説明しています。

テーブルが不要になった場合は drop を使用します。テーブルを保持しながらすべてのレコードを削除する場合は truncate を使用します。一部のレコードを削除する場合 (常に WHERE 句を使用) は delete を使用します。

Truncate は、テーブル内のすべてのデータをすばやくクリアできる SQL 構文です。また、カウントをゼロにリセットし、自動的に増分された値でフィールドを再計算することもできます。

1. 構文を切り捨てる

[ { データベース名.[ スキーマ名 ]. | スキーマ名. } ]
  テーブル名
[; ]

パラメータ

データベース名
データベースの名前。

スキーマ名
テーブルが属するスキーマの名前。

テーブル名
切り捨てられるテーブルの名前、または行が削除されるテーブルの名前。

2. Truncateの使用上の注意

1. TRUNCATE TABLE は、WHERE 句のない DELETE ステートメントと機能的に同じです。どちらもテーブル内のすべての行を削除します。ただし、TRUNCATE TABLE は DELETE よりも高速で、使用するシステム リソースとトランザクション ログ リソースが少なくなります。

2. DELETE ステートメントは一度に 1 行を削除し、削除された行ごとにトランザクション ログにエントリを記録します。 TRUNCATE TABLE は、テーブル データの格納に使用されたデータ ページを解放することによってデータを削除し、トランザクション ログにページの解放のみを記録します。

3. TRUNCATE TABLE はテーブル内のすべての行を削除しますが、テーブル構造とその列、制約、インデックスなどは変更されません。新しい行を識別するために使用されるカウント値は、列のシードにリセットされます。 ID カウント値を保持する場合は、代わりに DELETE を使用します。テーブル定義とそのデータを削除する場合は、DROP TABLE ステートメントを使用します。

4. FOREIGN KEY 制約によって参照されるテーブルの場合、TRUNCATE TABLE は使用できません。代わりに、WHERE 句のない DELETE ステートメントを使用する必要があります。 TRUNCATE TABLE はログに記録されないため、トリガーをアクティブ化できません。

5. TRUNCATE TABLE は、インデックス ビューに参加しているテーブルには使用できません。

6. TRUNCATE TABLE を使用して削除されたテーブルにデータを追加する場合は、UPDATE STATISTICS を使用してインデックス情報を維持します。

7. ROLLBACK ステートメントがある場合、DELETE 操作は元に戻されますが、TRUNCATE は元に戻されません。

3. TRUNCATE TABLEは次のテーブルでは使用できません

1. FOREIGN KEY 制約によって参照されるテーブル。 (自分自身を参照する外部キーを持つテーブルを切り捨てることができます。)

2. インデックス ビューに参加するテーブル。

3. トランザクション レプリケーションまたはマージ レプリケーションを使用して公開されたテーブル。

4. 上記の特性の 1 つ以上を持つテーブルの場合は、DELETE ステートメントを使用します。

5. TRUNCATE TABLE 操作では個々の行の削除が記録されないため、トリガーをアクティブ化できません。

IV. TRUNCATE、Drop、Deleteの違い

1. Drop と Delete では、テーブルのデータ (定義) のみが削除されます。Drop ステートメントでは、テーブル構造、依存制約、トリガー、およびインデックスが削除されます。テーブルに依存するストアド プロシージャ/関数は保持されますが、無効になります。
2. 削除ステートメントは DML 言語です。この操作はロールバック セグメントに配置され、トランザクションがコミットされた後にのみ有効になります。対応するトリガーがある場合は、実行時にトリガーされます。切り捨てと削除は DDL 言語です。これらは操作後すぐに有効になります。元のデータはロールバックの対象にならず、ロールバックできません。この操作によってトリガーはトリガーされません。

3. 削除ステートメントはテーブルが占有する範囲に影響を与えず、高水準点は元の位置に残ります。 drop ステートメントは、テーブルによって占有されているすべてのスペースを解放します。デフォルトでは、再利用ストレージが使用されない限り、truncate ステートメントは minexents の範囲までスペースを解放します。切り捨ては最高水準点をリセットします(最初に戻ります)。

4. 効率: 削除 > 切り捨て > 削除

5. セキュリティ: 特にバックアップがない場合は、drop と truncate を慎重に使用してください。一部のデータを削除する場合は、where 句を指定した delete を使用できます。ロールバック セグメントは十分な大きさである必要があります。テーブルを削除する場合は、drop を使用できます。テーブルを保持したままテーブル内のすべてのデータを削除したい場合は、トランザクションに関連しない場合は truncate を使用できます。トランザクションに関連している場合やトリガーをトリガーする場合は、delete を使用します。テーブル内のフラグメントを整理する場合は、truncate の後に reuse stroage を使用し、データを再インポートして挿入します。

6.delete は DML ステートメントであり、自動的には送信されません。 Drop/truncate はどちらも DDL ステートメントであり、実行後に自動的にコミットされます。

7. Drop は通常、テーブル、スキーマ、インデックス、ビュー、整合性制約などのデータ全体を削除するために使用されます。delete は、テーブル内のタプルなどのローカル データを削除するために使用されます。

8. DROPはテーブル構造を削除します。DELETEはデータのみをクリアします。

9. テーブルが不要になった場合は drop を使用します。テーブルを保持したまますべてのレコードを削除する場合は truncate を使用します。一部のレコードを削除する場合 (常に WHERE 句を使用) は delete を使用します。

MYSQL での Truncate の詳細な使用法に関するこの記事はこれで終わりです。MYSQL Truncate に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL Truncate の使用方法の詳細な説明
  • MySQL での Truncate の使用法の詳細な説明

<<:  HTML テーブル マークアップ チュートリアル (48): CSS で変更されたテーブル

>>:  廃止された Docker は Podman に置き換えられますか?

推薦する

HTML 名 ID とクラスの違い_PowerNode Java アカデミー

名前タグの名前を指定します。形式 <input type="text" n...

WebpackはCSSファイルを読み込み、その設定方法

webpackはCSSファイルとその設定をロードします複数の CSS ファイルを作成した後、HTML...

よくある CSS のヒントと経験談 11 選

1. 画像の下にある数ピクセルの空白を削除するにはどうすればよいですか?コードをコピーコードは次のと...

JSを段階的に学ぶ方法についての簡単な説明

目次概要1. jsの位置づけを明確に理解する2. 明確な学習パス3. 自己規律と粘り強さ4. 練習し...

5分でReactルーティングについてお教えします

目次ルーティングとは純粋コンポーネントの基本的な使用純粋なコンポーネントの使用に関する注意事項ルーテ...

JavaScript で一意の ID を生成するいくつかの方法

考えられる解決策1. Math.randomは[0,1)の範囲の乱数を生成します。 //今回は生成さ...

MySQL データ ウェアハウスを保護するための 5 つのヒント

さまざまなソースからデータを集約することで、中央倉庫を作成できます。データ ウェアハウスは、ビジネス...

MySql におけるプロセス制御関数/統計関数/グループ化クエリの使用法の分析

これからの道のりは長く困難ですが、私は探求を続けます。また週末がやってきました。引き続き、皆さんと一...

Linux DockerでSpringbootプロジェクトを実行するための詳細な手順

導入: springboot プロジェクトを実行する Docker の構成は実は非常にシンプルで、L...

きちんとしたHTMLマークアップを使用してページを構築します

インターネットは絶えず進化する有機体です。長期にわたってインターネットの発展に適応できるページを構築...

Promiseの紹介と基本的な使い方の簡単な分析

Promise は、ES6 で導入された非同期プログラミングのための新しいソリューションです。 Pr...

ウェブデザイナーが注意すべき 43 のウェブデザインの間違い

これはウェブサイトのユーザビリティに関する記事です。著者は自身の経験に基づいて、ウェブサイトのデザイ...

Nginx プロキシを使用してインターネットを閲覧する方法

私は通常、Tomcatや他のアプリケーションのリバースプロキシとしてnginxを使用しています。実際...

一般的なテーブルコンポーネントの Vue カプセル化の完全な手順記録

目次序文テーブル コンポーネントをカプセル化する必要があるのはなぜですか?ステップ1: 共通コンポー...

iframeフレームはIEブラウザで白い背景を透明に設定します

最近、プロジェクトを進める過程で、ページの階層構造を描画するために iframe を頻繁に使用する必...