受講料が最大70%OFF 受講料が最大70%OFF

SQLのdropについてまとめています。

dropはデータベースオブジェクトを削除するSQL

SQLのdropはデータベースオブジェクトを削除するSQLです。SQL92で定められた標準SQLです。

【関連記事】
SQLとはどういうもの? 独自拡張と標準SQLの大きな違いって、何?

SQLが発行されると即実行され、もとに戻すことはできません。また、dropを実行する権限が必要になります。

データベース削除はdrop database

drop databaseは、データベースを削除するSQLです。

たとえば、以下のSQLは、データベースemployeesをdropします。

mysql> drop database employees;
Query OK, 0 rows affected (0.21 sec)

データベース全てをdropしてしまう上、undoが効かないため、万が一の場合元に戻すにはバックアップデータが必要になります。また、MySQLなど、データベースによってはデータベース削除後も権限設定だけ残るケースもあります。

高速に全テーブルのデータ全件削除をおこなうために、drop databaseをおこなったあと、create database、テーブル作成DDLを実行するケースもあります。

【関連記事】
MySQLのデータベース削除は、drop database。復元するにはバックアップが必須

テーブル削除はdrop table

drop tableはテーブルを削除するSQLです。

下記のSQLは、テーブルdepartmentsを削除します。

drop table departments;
Query OK, 0 rows affected (0.02 sec)

格納されているデータと、テーブル構造自体を削除します。ただし、foreign keyなど制約が設定されているテーブルは、drop実行時にエラーが出力されて失敗するケースがあります。

【関連記事】
MySQLのテーブル削除はdrop table 外部キー制約は一時的に無効化する

カラム削除は、alter table drop column

標準SQLではdrop columnという命令はなく、alter tableにdrop指定をすることで、カラム削除をおこないます。

以下は、MySQLで、employees2テーブルから、col2カラムを削除し、削除後のテーブル構造を確認するサンプルです。

mysql> alter table employees2 drop col2;

mysql> desc employees2;
+------------+---------------+------+-----+---------+-------+
| Field      | Type          | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+-------+
| emp_no     | int           | NO   | PRI | NULL    |       |
| birth_date | date          | NO   |     | NULL    |       |
| first_name | varchar(14)   | NO   |     | NULL    |       |
| last_name  | varchar(16)   | NO   |     | NULL    |       |
| gender     | enum('M','F') | NO   |     | NULL    |       |
| hire_date  | date          | NO   |     | NULL    |       |
+------------+---------------+------+-----+---------+-------+

【関連記事】
SQLのalterはデータベースオブジェクトを変更 テーブルカラム追加・変更が可能

ユーザ削除はdrop user

drop userはユーザを削除するSQLです。

以下の例は、MySQLにて、ユーザ一覧表示後にユーザuser0@localhostを削除し、対象ユーザが削除されたことを確認しています。

mysql> select user, host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
| select_only      | localhost |
| user0            | localhost |
+------------------+-----------+
8 rows in set (0.02 sec)

mysql> drop user user0@localhost;
Query OK, 0 rows affected (0.24 sec)

mysql> select user, host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
| select_only      | localhost |
+------------------+-----------+
7 rows in set (0.00 sec)

【関連記事】
MySQLのユーザ削除はdrop user 8.0以降は存在しないユーザの扱いが異なる

drop tableとtruncate、deleteの違い

drop tableは、データとテーブル構造をまるごと削除します。deleteは、データのみを削除します。複雑な条件指定や、undoが可能です。truncateは、無条件で対象テーブルのデータを削除します。条件指定やundoができませんが、高速に実行可能です。

【関連記事】
SQL truncate 高速データ削除 deleteやdropとの違いとDBMS間の差異

まとめ

ポテパンダの一言メモ
  • dropは、データベースオブジェクトを削除するSQLで、実行後にundoできない
  • SQL92で定められている標準SQL
  • データベース、テーブル、ユーザなどの削除が可能

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。