\r\n\r\n
削除と切り捨て
SQL(Structured Query Language)コマンドのDeleteとTruncateは、どちらもデータベースのテーブルに保存されているデータを削除するために使用します。Deleteは、テーブルの一部またはすべての行を削除するDML(Data Manipulation Language)ステートメントです。"Truncate "は、テーブルからデータ全体を削除するDDL(Data Definition Language)ステートメントである。これらのコマンドは、いずれもテーブル構造やテーブルへの参照を破壊するものではなく、必要なデータのみを削除するものである。
ステートメントを削除する
Delete文は、指定された条件に基づいて、データベース内の既存のテーブルからデータを削除することができ、この条件を決定するためにWhere句が使用される。DeleteはDML文なので、コマンド実行時に自動的にコミットされるわけではありません。そのため、必要に応じて、削除操作をロールバックして、再度データにアクセスすることができます。Deleteコマンドを実行した後は、変更を永久に保存するために、コミットまたはロールバックする必要があります。Deleteステートメントは、データベースからテーブルの構造を削除しません。また、テーブルが使用しているメモリ領域も解放されません。
Deleteコマンドの典型的な構文は以下のとおりです。
フォーム名>から削除されました。
または
テーブル名から削除します。
ステートメントの切り捨て
Truncateステートメントは、データベース内の既存のテーブルからすべてのデータを削除しますが、同じテーブル構造、整合性制約、アクセス権、および他のテーブルとの関係は保持されます。truncateは、データを保持するためのデータページを解放することでデータ全体を削除し、これらのページ解放のみがトランザクションログに保持されます。その結果、truncateコマンドの動作に使用するシステムおよびトランザクションログのリソースが少なくなり、他の関連コマンドよりも高速に動作します。truncateはDDLコマンドであるため、ステートメントの実行前後に自動コミットを使用します。そのため、truncateはいかなる方法でもデータを再びロールバックすることはできない。実行後、テーブルが使用していたメモリ領域を解放する。ただし、Truncateステートメントは、外部キー制約によって参照されるテーブルには適用できません。
以下は、Truncate文の一般的な構文です。
フォームの切り捨て < フォーム名>.
Delete と Truncate の違いは何ですか?1 Delete と Truncate コマンドは、データベース内の既存のテーブルから、テーブル構造やテーブルへの他の参照にダメージを与えずにデータを削除するコマンドです。DeleteはDMLコマンドであり、必要に応じて操作をロールバックすることができるが、TruncateはDDLコマンドであり、自動コミットである。ステートメントを使用し、いかなる方法でもロールバックすることはできません。Truncate操作はDelete操作よりもシステム・リソースとトランザクション・ロギング・リソースの消費が少ないため、TruncateはDeleteよりも高速であると考えられています。また、Deleteはテーブルが使用している領域を解放しないのに対し、Truncateは実行後に使用領域を解放するため、データベーステーブルからデータ全体を削除する場合、Deleteは効率的ではありません。しかし、テーブルが外部キー制約によって参照されている場合、Truncateは使用できない。その場合、Truncateの代わりにDeleteコマンドを使用できる7 結論として、データベース管理システムにおいて、これら二つのコマンドの使用には利点と欠点があり、ユーザーはこれらのコマンドを適切に使用し、良い結果を得ることを認識すべきなのである。 |