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

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

序文:

テーブルをクリアしたいときは、truncate ステートメントをよく使用します。ほとんどの場合、私たちは、そのようなステートメントの使用シナリオや注意事項を考えずに、ニーズが満たされるかどうかだけを気にします。この記事では主にtruncate文の使い方と注意点について紹介します。

1. 使用構文を切り捨てる

truncate の機能は、テーブルをクリアするか、テーブルを切り捨てることであり、テーブル上でのみ使用できます。 truncate の構文は非常にシンプルで、テーブル名を続けるだけです。たとえば、 truncate table tbl_nameまたはtruncate tbl_name

truncate ステートメントを実行するには、テーブルに対する drop 権限が必要です。論理的には、truncate table は、すべての行を削除する delete ステートメント、または drop table と create table ステートメントの組み合わせに似ています。高いパフォーマンスを実現するために、データを削除する DML メソッドをバイパスし、ロールバックできないようにします。 truncate table は delete に似ていますが、DML ステートメントではなく DDL ステートメントとして分類されます。

2. 切り捨て、ドロップ、削除の比較

前述のように、truncate は delete や drop と非常によく似ています。しかし、実際には、これら 3 つの間には依然として大きな違いがあります。以下は、3 つの類似点と相違点の簡単な比較です。

  • truncate と drop は DDL ステートメントであり、実行後にロールバックすることはできません。delete は DML ステートメントであり、ロールバックできます。
  • 切り捨てはテーブルにのみ適用できますが、削除とドロップはテーブル、ビューなどに適用できます。
  • Truncate はテーブル内のすべての行をクリアしますが、テーブル構造とその制約、インデックスなどは変更されません。drop はテーブル構造とそれが依存する制約、インデックスなどを削除します。
  • 切り捨てはテーブルの自動増分値をリセットしますが、削除はリセットしません。
  • 切り捨てではテーブルに関連付けられた削除トリガーはアクティブになりませんが、削除ではアクティブになります。
  • 切り捨て後、テーブルとインデックスが占めるスペースは初期サイズに復元されます。削除操作ではテーブルまたはインデックスが占めるスペースは削減されず、drop ステートメントによってテーブルが占めるスペースがすべて解放されます。

3. 使用シナリオと注意事項を切り捨てる

これまでの紹介を通じて、truncate ステートメントの使用シナリオを簡単に導き出すことができます。つまり、テーブル データが完全に不要な場合に truncate を使用できます。一部のデータを削除する場合は、delete を使用し、where 句を含めることを忘れないでください。テーブルを削除する場合は、もちろん drop を使用します。テーブルを保持してすべてのデータを削除し、それがトランザクションとは関係がない場合は、truncate を使用します。トランザクションに関連している場合、またはトリガーをトリガーする場合は、やはり delete を使用します。テーブル内のフラグメントを整理する場合は、truncate を使用してからデータを再挿入できます。

いずれにしても、テーブルの切り捨てはリスクの高い操作であり、特に本番環境ではより注意する必要があります。ここでは注意すべき点をいくつか挙げますので、使用時の参考にしていただければ幸いです。

  • 切り捨ては binlog を通じてロールバックできません。
  • Truncate はすべてのデータをクリアし、非常に高速に実行します。
  • 切り捨ては、外部キー制約によって参照されるテーブルでは使用できません。
  • truncate を実行するには、ドロップ権限が必要です。アカウントにドロップ権限を与えることは推奨されません。
  • truncate を実行する前に必ず再度確認し、確認してください。事前に以下のテーブルデータをバックアップしておくことをお勧めします。

以上が編集者が紹介したMySQLにおけるTruncateの使い方の詳しい説明です。皆様のお役に立てれば幸いです。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

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

<<:  CSSは高さを設定せずにdivを完全に中央に配置することを実現します

>>:  HTML の 2 つのタブ ナビゲーション間の競合の解決方法

推薦する

MySQLデータベースでサポートされているストレージエンジンの比較

目次ストレージエンジンMySQL でサポートされているストレージ エンジン同時実行制御ロック粒子をロ...

MySQLの論理アーキテクチャに関する深い理解

MySQL は現在、ほとんどの企業や事業体で使用されているデータベースです。MySQL が使用される...

Dockerイメージサイズを最適化する一般的な方法

通常、私たちが構築する Docker イメージはサイズが大きく、多くのディスク領域を占有します。コン...

MySQLクエリステートメントの簡単な操作例

この記事では、例を使用して、MySQL クエリ ステートメントの簡単な操作を説明します。ご参考までに...

Windows での MySQL データベースのマスター/スレーブ構成チュートリアル

WindowsでMySQLデータベースのマスターとスレーブを構成する詳細なプロセスは次のとおりです。...

CSS3でアニメーションを実装する3つの方法

これは、面接者の CSS に関する基本的な知識をテストするものです。 CSSでアニメーションを実装す...

良いと思う国内のデザインサイトをいくつか選んでみました。

<br />私が良いと思った国内のデザインサイトをまとめてみました。広告ではありません!...

vue3+TypeScript+vue-routerの使い方

目次使いやすいプロジェクトを作成するvue-cli 作成ヴィートクリエイションvue-routerを...

Mysqlはブール型の演算を設定します

Mysqlはブール型を設定します1. Tinyintタイプテストテーブルを作成し、blフィールドをブ...

MySQL のテーブルリターンとインデックスカバレッジの例の詳細な説明

目次インデックスタイプインデックス構造非クラスター化インデックスクエリインデックスカバー要約するイン...

VUE ユニアプリカスタムコンポーネントについての簡単な説明

1. 親コンポーネントはpropsを通じて子コンポーネントにデータを渡すことができる2. 子コンポー...

OpenShift のクイックインストールの詳細な手順

OpenShift 3.9 の最新バージョンを体験する最も早い方法。準備 [root@host ~]...

Vue 開発プロジェクトで Font Awesome 5 を使用する方法

目次依存関係をインストールする構成使用1.アイコン検索ページに入る2. 使用したいアイコンの英語名を...

Node.js http モジュールの使用

目次序文ウェブHTTP サーバーファイルサーバー練習する序文Node.js 開発の目的は、JavaS...