削除と切り捨ての主な違いは、削除はテーブルから単一、複数またはすべてのレコードを削除するのに対し、切り捨てはデータベースからテーブルの構造だけでなく、すべてのレコードを削除することです。
データベースは、関連するデータの集合体です。
データベース管理システム(DBMS)は、データベース内のデータを作成し、管理することができる。
さらに、リレーショナルモデルに従っているDBMSは、リレーショナルデータベース管理システム(RDBMS)です。
これはデータをテーブルに格納し、テーブル同士は互いに関連している。
SQL(Structured Query Language)により、ユーザーはテーブル内のデータを操作するためのクエリを書くことができる。
SQLには様々なコマンドがありますが、そのうちの2つがdeleteとtruncateです。
削除とは
deleteコマンドは、データベース内のあるテーブルからレコードを削除するのに役立ちます。
以下のstudentというテーブルを参照してください。
テーブルstudentからすべてのレコードを削除するSQLステートメントは、次のとおりです。
studentから削除します。
また、テーブルから特定のレコードを削除することもできます。
delete from student where id =2;
このSQL文は、idが2のレコードを削除します。
このSQL文の実行後、テーブルにはidが1と3のレコードの2つのレコードが存在することになります。
Truncateとは
Truncateコマンドは、テーブルからすべてのレコードを削除するのに役立ちます。
また、データベースからテーブル構造を削除することもできます。
したがって、特定のテーブルでtruncateコマンドを実行すると、主キーも初期化されます。
次のSQLコマンドは、studentテーブルからすべてのレコードを削除します。
さらに、データベースからテーブル構造を削除します。
truncate table student;
DeleteとTruncateの違い
定義
deleteはデータベースのテーブルから1つまたは複数のレコードを削除するDMLコマンドであるのに対し、truncateはテーブルの拡張部分を削除するDDLコマンドです。
これがdeleteとtruncateの根本的な違いです。
機能性
deleteとtruncateの主な違いは、deleteコマンドが指定されたSQL文に従ってテーブルから単一、複数またはすべてのレコードを削除するのに対して、truncateコマンドはデータベースからすべてのレコードとテーブル構造を削除することです。
テーブル構造
さらに、deleteとtruncateのもう一つの違いは、deleteコマンドはテーブル構造に影響を与えないのに対して、truncateコマンドはデータベースからテーブル構造を削除することである。
コマンドタイプ
コマンドの種類もdeleteとtruncateの違いです。
deleteがDML(Data Manipulation Language)コマンドであるのに対し、truncateはDDL(Data Definition Language)コマンドです。
WHERE CLOUSE
さらに、deleteコマンドでwhere句を使用して、レコードをフィルタリングして削除することも可能である。
ただし、where節をtruncateコマンドと一緒に使うことはできない。
実行速度
実行速度もdeleteとtruncateの違いの一つです。
deleteコマンドはログを保持するため、実行速度が遅くなります。
しかし、truncateコマンドはトランザクションログに最小限のログしか残さないので、実行速度は速くなります。
インデックスビューとの関連付け
さらに、deleteコマンドはインデックス付きビューで使用することができますが、truncateコマンドはインデックス付きビューで使用することができません。
必要なトランザクションスペース
また、deleteコマンドは、truncateコマンドよりも多くのトランザクションスペースを使用します。
この点も、deleteコマンドとtruncateコマンドの違いと言えるでしょう。
結論
簡単に言うと、deleteとtruncateは2つのSQLコマンドです。
しかし、deleteとtruncateの主な違いは、deleteがテーブルから単一、複数またはすべてのレコードを削除するのに対し、truncateはテーブルの構造だけでなくすべてのレコードもデータベースから削除することです。