一般的なSQL削除ステートメントの原則の違いを理解するだけです

一般的なSQL削除ステートメントの原則の違いを理解するだけです

この記事では主に、SQL 削除ステートメント DROP、TRUNCATE、および DELETE の違いを紹介し、SQL ステートメントをよりよく理解して学習できるようにします。興味のある方は、さらに詳しく知ることができます。

落とす:

DROP TABLE テスト。

テスト テーブルを削除してスペースを解放し、テスト テーブル内のすべてのデータを削除します。

切り捨て:

TRUNCATE テスト;

テスト テーブルの内容を削除してスペースを解放しますが、テーブル定義は削除しないでください。テーブル構造はそのまま残ります。

消去:

1. 指定したデータを削除する

テストテーブルから、年齢が30歳で国が米国のデータを削除します。

age=30 かつ country='US' の場合、test から削除します。

2. テーブル全体を削除する

テスト テーブルのすべての内容を削除し、テーブル定義を保持し、スペースを解放しません。

DELETE FROM test または TRUNCATE test;

truncate table コマンドは、テーブル内のすべてのレコードをすばやく削除しますが、テーブル構造は保持します。このクイック削除は、すべてのテーブル レコードを削除する delete from table コマンドとは異なります。delete コマンドによって削除されたデータは、システム ロールバック セグメントに保存されます。必要に応じて、データをロールバックして復元できますが、truncate コマンドによって削除されたデータは復元できません。

類似点

切り捨て、where 句なしの削除、およびドロップはテーブル内のデータを削除します。

違い:

1. 切り捨てと削除ではデータのみが削除され、テーブル構造 (定義) は削除されません。ドロップ ステートメントは、テーブル構造が依存する制約、トリガー、およびインデックスを削除します。テーブルに依存するストアド プロシージャ/関数は保持されますが、無効になります。

2. 削除文は DML 文です。この操作はロールバック セグメントに配置され、トランザクションがコミットされた後にのみ有効になります。対応するトリガーがある場合は、実行時にトリガーされます。切り捨てと削除は DDL 操作です。操作はすぐに有効になります。元のデータはロールバック セグメントに配置されず、ロールバックできません。 操作によってトリガーがトリガーされません。

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

4. 速度: 一般的には、ドロップ > 切り捨て > 削除の順になります。

5. 安全性: 特にバックアップがない場合は、ドロップと切り捨てを慎重に使用してください。そうでなければ泣くには遅すぎるでしょう。
やっと

使用時には、一部のデータ行を削除する場合は delete を使用し、必ず where 句を含めてください。 ロールバック セグメントは十分な大きさである必要があります。

テーブルを削除する場合は、もちろん drop を使用します。

テーブルは保持しますが、すべてのデータを削除します。トランザクションに関係がない場合は、切り捨てのみを使用します。 トランザクションに関連している場合、またはトリガーをトリガーする場合は、delete を使用します。

テーブルをデフラグする必要がある場合は、切り捨てを使用してからストレージを再利用し、データを再インポート/挿入することができます。

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

以下もご興味があるかもしれません:
  • Mysql のいくつかの複雑な SQL ステートメント (重複行のクエリと削除)
  • SQLバッチ置換ステートメントを使用して、フィールドの内容を変更、追加、削除します。
  • 重複レコードを削除し、1つだけ残すSQL文
  • 知っておくべきSQL文(IV)データの削除と更新
  • 知っておくべきSQL文(パート2)テーブルの作成、テーブル構造の変更、テーブルの削除
  • SQL ステートメントを使用して制約を作成および削除するためのサンプル コード
  • OracleはSQL文を使用してフィールドを追加します(SQLフィールド削除文)
  • MySQL で指定されたプレフィックス テーブルを一括削除する SQL ステートメント
  • SQL ステートメントを使用して外部キーと主キーを削除および追加する方法
  • MySQL の Delete および Truncate ステートメントの比較

<<:  Vue3 AST パーサー - ソースコード分析

>>:  Tomcat サーバーの応答が遅い場合の解決策

推薦する

Vueのイベント処理とイベント修飾子の詳細な説明

<div id="ルート"> <h2>頑張れ、{{na...

C++ を使用して MySQL に接続する方法

C++でMySQLに接続する際の参考情報です。具体的な内容は以下のとおりです。 MySQLCon ク...

MySQL で単一のフィールド内の複数の値を分割および結合する方法

複数の値を組み合わせて表示これで、図1から図2に示す要件が揃いました。 どうやってやるんですか?次の...

JQuery データグリッドクエリの詳細な説明

目次ツリー項目にコードを追加します。 1. 右側に関連情報ページを保存します(userManage....

Nodejs でモジュール fs ファイルシステムを使用する方法

目次概要ファイル記述子同期、非同期、Promise同期書き込み非同期書き込み(推奨)約束​​の書き方...

JS に依存せずにレスポンシブ レイアウトを実現する CSS3 モバイル vw+rem メソッド

1. はじめに(1)vw/vhの紹介使用する前に、vw と rem とは何か、その機能について簡単に...

Douyin ロゴを作成する手順の CSS3 分析

「Tik Tok」も大人気で、ユーザー数は7億人と言われています。今日は、注目を集めるためにTikT...

HTMLは正規表現を使用してテーブルの例をテストします

以下は、HTML で正規表現を使用してテーブルをチェックするサンプル コードです。具体的なコードの内...

MySQLでバッチを更新するいくつかの方法

通常、フィールド値を更新するには次の SQL ステートメントを使用します。 mytable を更新し...

CSSは座席選択効果を実現するためにautoflow属性を使用する

1. 自動フロー属性、要素コンテンツの長さと幅が要素自体の長さと幅を超える場合、スクロールバーが表示...

シンプルな商品スクリーニング機能を実現するjs

この記事の例では、商品スクリーニング機能を実装するためのjsの具体的なコードを参考までに共有していま...

JavaScript でアルゴリズムの複雑さを学ぶ方法

目次概要Big O 表記法とは何ですか?オー(1)の上) (n^2) O(logn) ですの上!)結...

JavaScript エラー処理 try..catch...finally + は throw+TypeError+RangeError をカバーします

目次1. 目的2. 文法3. 練習する1. 目的通常、エラーが発生すると、スクリプトは直ちに停止し、...

Ubuntu 20.04 デスクトップのインストールとルート権限の有効化および SSH インストールの詳細

記事は主にUbuntu 20.04の簡単なインストールプロセスを記録し、インストール後に国内ソースを...

Vuexの補助関数の使い方

目次マップ状態マップゲッターマップミューテーションマップアクション複数のモジュールマップ状態 ...