この記事では、DropコマンドとTruncateコマンド、およびこれら2つのコマンドの違いについて学習して理解します。
ドロップコマンドとは何ですか?
ドロップは、構造化照会言語のデータ定義言語コマンドです。 SQLのDropコマンドは、データベーステーブルからテーブル定義、データベース、インデックス、ビュー、トリガー、およびデータ制約を削除または削除するために使用されます。
構造化照会言語では、dropコマンドを使用して、リレーショナルデータベース管理システム(RDBMS)から要素を削除します。
Deleteコマンドは、実行されるとデータをロールバックできますが、Dropコマンドは、実行されるとデータをロールバックできません。ドロップコマンドは、テーブルとその内容を完全に削除するため、テーブルスペースが格納されているメモリを解放するために使用されます。
ドロップコマンドは、構造化照会言語の切り捨てコマンドと比較して高速です。ただし、dropコマンドの実行タイミングは複雑なため、実行タイミングが遅くなります。
テーブルから1つ以上の列を削除するには、ALTERTABLEコマンドとともにdropコマンドを使用します。
データベースを削除するDROPコマンドの構文は次のとおりです。
DROP DATABASE Database_Name;
上記の構文では、システムから削除するデータベース名を指定する必要があります。
注:-ドロップコマンドは、データベースで作成されたテーブル、インデックス、ビュー、トリガーなどのすべてのオブジェクトをデータベースから削除するため、データベースを削除するためにDROPコマンドを使用する前に注意してください。
テーブルを削除するための構文は次のとおりです。
DROP TABLE Table_Name;
上記の構文では、データベースから削除するテーブル名を指定する必要があります。
1つのステートメントで同じデータベースから複数のテーブルを削除するための構文は次のとおりです。
DROP TABLE table1, table2, table3;
上記の構文を使用して、同じデータベースから複数のテーブルを削除できます。
インデックスを削除するための構文は次のとおりです。
DROP INDEX Index_Name;
上記の構文では、インデックスキーワードの直後にインデックス名を指定する必要があります。
ビューを削除するための構文は次のとおりです。
DROP VIEW View_Name;
上記の構文で、Viewキーワードの直後にビュー名を指定する必要があります。
ALTERTABLEを使用してテーブルから制約を削除するための構文は次のとおりです。
ALTER TABLE Table_Name DROP CONSTRAINT Constraint_Name;
SQLでALTERTABLEコマンドを使用すると、テーブルから制約を削除できます。
DROPコマンドの例:
DROPコマンドを使用していくつかの例を取り上げます。
ステップ1: データベースを作成するか、既存のデータベースを使用します。 DROPコマンドには2つのデータベースを使用します。
ステップ2: 新しいテーブルを作成するか、既存のテーブル、インデックス、ビューを使用します。
例1: 学校のデータベースからテーブルstudents_informationを削除するクエリを記述します。
まず、USEキーワードに続いてデータベース名を使用してSchoolデータベースを選択します。
USE School;
選択したデータベースからstudents_informationテーブルを削除するdropコマンドを記述します。
次のレコードを持つStudents_informationテーブルを検討してください。
Student_Id | Student_Name | Student_Course | Student_Marks |
1 | アンジャリ | BCOM | 85 |
2 | プラナフ | BCA | 80 |
3 | Yogesh | B.E | 88 |
4 | ブーシャン | MBA | 95 |
5 | プーナム | MCOM | 97 |
6 | Bhavesh | B.E | 90 |
7 | クシ | BSC | 94 |
8 | Piyush | BCOM | 75 |
9 | ニキータ | BA | 88 |
10 | アイシュワリヤー | BSC | 70 |
DROP TABLE Students_Information;
上記のクエリから、テーブル内に存在するすべてのレコードを含むStudents_informationテーブルを削除しました。
クエリが正常に実行されたかどうかをクロスチェックするために、SELECTクエリを実行します。
SELECT * FROM Students_Information;
Student_informationテーブルでselectクエリを実行すると、テーブルが存在しませんというメッセージが表示されます。これは、Students_informationテーブルでのDropコマンドクエリが正常に実行されたことを意味します。
例2: 会社のデータベースからmanager_view1ビューを削除するクエリを記述します。
次のレコードを持つmanager_view1ビューについて考えてみます。
MANAGERID | MANAGER_NAME | MANAGER_DEPARTMENT |
1 | Snehdeep Kaur | ORACLE |
3 | Abhishek Manish | JAVA |
選択したデータベースからmanager_view1ビューを削除するdropコマンドを記述します。
DROP VIEW Manager_view1;
上記のクエリからmanager_view1ビューを削除し、ビュー内にすべてのレコードが存在します。
クエリが正常に実行されたかどうかをcross_checkするために、SELECTクエリを実行します。
SELECT * FROM Manager_view1;
manager_view1ビューでselectクエリを実行すると、ビューが存在しませんというメッセージが表示されます。これは、manager_view1ビューでのDropコマンドクエリが正常に実行されたことを意味します。
例3: クリケットデータベースをシステムから削除するクエリを記述します。
データベースに対してdropコマンドを実行する前に、まずshow databaseコマンドを実行して、dropコマンドの最後に、Cricketデータベースをシステムから正常に削除したことを確認します。
SHOW DATABASES;
データベース |
Chk |
会社 |
クリケット |
従業員 |
Information_schema |
MySQL |
Performance_schema |
Phpmyadmin |
学校 |
テスト |
WordPress |
上記は、システムにすでに存在するデータベースです。クリケットデータベースをシステムから削除します。データベースを削除するとは、データベーステーブル、ビュー、インデックス、トリガーなどの内部にあるすべてのオブジェクトを削除することを意味します。
次に、Cricketデータベースを削除するためのクエリを実行します。
DROP DATABASE Cricket;
Cricketデータベースでドロップクエリを実行しました。データベースが正常に削除されたかどうかを確認するために、SHOWDATABASESクエリを実行します。
SHOW DATABASES;
データベース |
Chk |
会社 |
従業員 |
Information_schema |
MySQL |
Performance_schema |
Phpmyadmin |
学校 |
テスト |
WordPress |
ご覧のとおり、クリケットデータベースはシステムから正常に削除されています。
例4: 従業員テーブルから姓の列を削除するクエリを記述します。
ALTER TABLE employee DROP Last_Name;
上記のクエリでDROPコマンドとALTERコマンドを使用して、employeeテーブルからLast_Name列を削除しました。
フィールド | タイプ | ヌル | キー | デフォルト | 追加 |
EMPLOYEEID | int(11) | いいえ | PRI | NULL | |
FIRST_NAME | varchar(20) | はい | NULL | ||
給与 | int(11) | はい | NULL | ||
CITY | varchar(20) | はい | NULL | ||
部門 | varchar(20) | はい | NULL | ||
MANAGERID | int(11) | はい | NULL |
上記の出力は、Last_Nameがemployeeテーブルから削除されたことを示しています。
トランケートコマンドとは何ですか?
切り捨ては、構造化照会言語のもう1つのデータ定義言語コマンドです。 Truncateコマンドは、テーブルからすべてのレコードを削除するために使用されます。 DROPコマンドと同様ですが、TRUNCATEコマンドにはWHERE句が含まれていません。 Truncateコマンドは、DROPコマンドとDELETEコマンドの両方よりも高速です。 TRUNCATEコマンドを使用した後、DROPコマンドのようにレコードをロールバックすることはできません。
SQLでのTRUNCATEコマンドの構文:
TRUNCATE TABLE tablename;
上記の構文では、データをテーブルから削除するテーブル名を指定する必要があります。
TRUNCATEコマンドを使用していくつかの例を取り上げます。
TRUNCATEコマンドの例:
ステップ1: データベースを作成するか、既存のデータベースを使用します。
ステップ2: 新しいテーブルを作成するか、既存のテーブルを使用します。
次のレコードを持つ既存のテーブルについて考えてみます。
表:従業員:
EMPLOYEEID | FIRST_NAME | LAST_NAME | 給与 | CITY | 部門 | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | シャルマ | 60000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | ジャイプール | FMW | 2 |
2001 | PRACHI | シャルマ | 55500 | チャンディーガル | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | ルチカ | JAIN | 50000 | ムンバイ | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | ジャイプール | FMW | 2 |
3003 | DEEPAM | ジャウハリ | 58500 | ムンバイ | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | ムンバイ | テスト | 4 |
4002 | ASHWINI | バガット | 54500 | NOIDA | JAVA | 3 |
4003 | ルチカ | AGARWAL | 60000 | デリー | ORACLE | 1 |
5001 | ARCHIT | シャルマ | 55500 | デリー | テスト | 4 |
例: truncateコマンドを使用して、employeeテーブルからすべてのレコードを削除するクエリを記述します。
TRUNCATE TABLE Employee;
上記のクエリのすべてのレコードをemployeeテーブルから削除しました。
従業員テーブルのすべてのレコードが正常に削除されたかどうかをクロスチェックするために、従業員テーブルに対してSELECTクエリを実行します。
SELECT * FROM Employee;
EMPLOYEEID | FIRST_NAME | LAST_NAME | 給与 | CITY | 部門 | MANAGERID |
従業員テーブルでselectクエリを実行すると、空のsetメッセージが表示されます。これは、従業員テーブルのtruncateコマンドが正常に実行されたことを意味します。
以下のポイントは、構造化照会言語でのDropコマンドとTruncateコマンドの違いを示しています。
DROPコマンド | TRUNCATEコマンド |
DROPコマンドは、テーブル構造とテーブルレコードを削除します。 | TRUNCATEコマンドは、テーブルからすべてのレコードを削除します。 |
DROPコマンドはデータ定義言語コマンドです。 | TRUNCATEコマンドはデータ定義言語コマンドでもあります。 |
DROPコマンドで、表スペースにメモリーがありません | TRUNCATEコマンドは、表スペースをメモリーから解放しません。 |
テーブルビューがDROPコマンドに存在しません | テーブルビューはTRUNCATEコマンドに存在します |
DROPコマンドでは、削除スペースを使用できません。 | TRUNCATEコマンドでは、削除スペースを使用できますが、DELETEステートメントと比較した場合よりも少なくなります。 |
DROPコマンドでは、整合性制約がテーブルから自動的に削除されます。 | 整合性制約はTRUNCATEコマンドのテーブルから削除されません。 |
DROPコマンドはレコードをすばやく削除しますが、多くの問題があります。 | TRUNCATEコマンドはDROPコマンドよりも高速です。 |