ホームページ > データベース > mysql チュートリアル > Truncateステートメントをどのように使用しますか?切り捨てと削除の違いは何ですか?

Truncateステートメントをどのように使用しますか?切り捨てと削除の違いは何ですか?

百草
リリース: 2025-03-19 15:39:25
オリジナル
634 人が閲覧しました

トランケートステートメントの使用方法:

SQLのTRUNCATEステートメントは、個々の行の削除を記録することなく、すべてのレコードをテーブルからすばやく削除するために使用されます。これにより、大きなテーブルをクリアするためにより効率的になります。トランケートステートメントを使用するための基本的な構文は次のとおりです。

 <code class="sql">TRUNCATE TABLE table_name;</code>
ログイン後にコピー

ここで、 table_nameは、切り捨てたいテーブルの名前です。 TRUNCATEステートメントは、自動インクリメント値を開始値にリセットし、構造を保持しながらすべてのデータをテーブルから削除する必要がある場合に有益になる可能性があります。

たとえば、 employeesという名前のテーブルがある場合、次のコマンドを使用してすべてのレコードを削除できます。

 <code class="sql">TRUNCATE TABLE employees;</code>
ログイン後にコピー

トランケートは最小限にログに記録され、トリガートリガーがトリガーされないため、通常、削除を使用してテーブルからすべての行を削除するよりも速く、トランケートを使用することは速いことに注意することが重要です。

データベースでトランケートステートメントを実行する手順は何ですか?

Truncateステートメントを実行するには、いくつかの簡単な手順が含まれます。

  1. データベースにアクセス:希望するデータベース管理ツールまたはコマンドラインインターフェイスを使用して、データベースに接続します。
  2. 適切なデータベースを選択してください。データベースシステムに複数のデータベースが含まれている場合は、正しいデータベース内で作業していることを確認してください。
  3. テーブルの依存関係を確認する:テーブルを切り捨てる前に、影響を受ける可能性のある外部のキーの制約または依存関係を確認することが重要です。これらを一時的に無効にする必要があるかもしれません。
  4. バックアップデータ(オプション) :一部のデータベースシステムでは切り捨てられないため、コマンドを実行する前にデータをバックアップすることをお勧めします。
  5. Truncateステートメントを実行します:以前に提供された( TRUNCATE TABLE table_name; )提供された構文を使用してテーブルをクリアします。
  6. 結果を確認します:Truncateコマンドを実行した後、テーブルを照会するか、適切なコマンドを使用して行数を確認することにより、テーブルが空であることを確認します。

SQL環境で結果を確認する方法の例は次のとおりです。

 <code class="sql">SELECT COUNT(*) FROM table_name;</code>
ログイン後にコピー

トランケートが成功した場合、これは0返す必要があります。

パフォーマンスと使用量の点で、トランケートは削除とどのように異なりますか?

TRUNCATEとDELETEは両方ともテーブルからデータを削除するために使用されますが、パフォーマンスと使用法の点で異なる動作をします。

パフォーマンス:

  • 切り捨て

    • Truncateは、個々の行の削除を記録しないため、テーブルからすべてのレコードを削除するために削除するよりも一般的に高速です。代わりに、テーブルデータの保存に使用されるデータページを扱います。
    • 自動インスク化された値を開始値にリセットします。これは、番号付けを再起動する場合に有益です。
  • 消去

    • 削除操作は、完全にログにされているため遅くなります。すべての削除はトランザクションログに記録されるため、必要に応じて行ごとのロールバックが可能になります。
    • deleteは自動インクリメント値をリセットしないため、番号付けは中断されたところから続きます。

使用法:

  • 切り捨て

    • それらの制約が無効になっていない限り、外部キーの制約によって参照されるテーブルでは、切り捨ては使用できません。
    • テーブルに関連付けられたトリガーをアクティブにしません。
    • インデックス付きビューに参加するテーブルを切り捨てることはできません。
  • 消去

    • 制約が許可されていれば、削除は、外部​​キーの制約を備えたテーブルで使用できます。
    • 削除は、テーブルに定義されているトリガーをアクティブにします。
    • deleteは、Where句の条件を指定することにより、特定の行を削除するために使用できます。

トランケートを巻き戻すことができますか?そうでない場合、データ回復の代替案は何ですか?

トランケートをロールバックできるかどうかは、データベースシステムによって異なります。

  • MySQLでは、Truncateはトランザクションであり、トランザクション内で実行されるとロールバックできます。
  • SQL Server :Truncateはトランザクションではなく、ロールバックすることはできません。 DDL操作と見なされます。
  • PostgreSQLでは、トランザクション内でトランケートをロールバックできます。

データベースシステムで切り捨てられない場合、データを回復する必要がある場合は、これらの代替案を考慮してください。

  1. バックアップと復元:データベースの最近のバックアップがある場合は、データを回復するために復元できます。このアプローチでは、バックアップが定期的に実行および維持される必要があります。
  2. ポイントインタイムリカバリ:一部のデータベースシステムは、Point-in-Time Recoveryをサポートします。これにより、切り捨て操作が実行される前にデータベースを特定のポイントに復元できます。
  3. データのインポート:最近データをエクスポートしている場合、切り捨てられた操作後にテーブルに再インポートできます。
  4. 操作をやり直す:操作のログがテーブルで実行されている場合(たとえば、ステートメントを挿入)、これらの操作を再生してデータを再構築できます。

いずれにせよ、データ損失のリスクを最小限に抑えるには、切り捨てのような潜在的に破壊的な操作を実行する前に、堅牢なバックアップと回復手順を実施することが重要です。

以上がTruncateステートメントをどのように使用しますか?切り捨てと削除の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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