テーブルを削除する(DROP TABLE)

広告
eyecatch

DROP TABLE コマンドを使って作成済みのテーブルを削除する方法について解説します。

テーブルを削除する

テーブルを削除するには DROP TABLE コマンドを使用します。次の書式を使います。

DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

テーブル名( name )のテーブルを削除します。

テーブルに対してビューや他のテーブルから外部キー参照が作成されていた場合、 RESTRICT が設定されていた場合はエラーとなります。 CASCADE を指定した場合はビューも併せて削除となり外部キー制約については外部キー制約のみが削除されます。特に指定しなかった場合は RESTRICT が指定されたものとして扱われます。

テーブルを削除するには、コマンドを実行するロールがスーパーユーザーか、テーブルの所有者か、テーブルが作成されているスキーマの所有者である必要があります。

-- --

それでは実際に試してみます。現在 mydb データベースの public スキーマに作成されているテーブルおよびビューは次の通りです。

¥d

テーブルを削除する(1)

この中から bookmark テーブルを削除します。次のように実行してください。

drop table bookmark;

テーブルを削除する(2)

テーブルが削除されました。確認のためにあらためて ¥d コマンドを実行してみます。

テーブルを削除する(3)

bookmark テーブルが削除されていることが確認できます。

-- --

次に mybook テーブルを削除します。 mybook テーブルに対しては bookname ビューが作成されています。では次のように実行してください。

drop table mybook;

テーブルを削除する(4)

ERROR: 他のオブジェクトが依存しているためテーブルmybookを削除できません というエラーが表示されてテーブルの削除に失敗しました。 mybook テーブルのようにテーブルからビューが作成されている場合などには DROP TABLE コマンドを実行するときに CASCADE を指定する必要があります。

それでは次のように実行してください。

drop table mybook cascade;

テーブルを削除する(5)

テーブルの削除に成功しました。 mybook テーブルからは bookname ビューが作成されていましたが、 CASCADE を付けてテーブルを削除したので bookname ビューもあわせて削除されました。確認のため ¥d コマンドを実行してみます。

テーブルを削除する(6)

public スキーマの中にあった mybook テーブルと bookname ビューがまとめて削除されました。

-- --

DROP TABLE コマンドを使ってテーブルを削除する方法について解説しました。

PostgreSQLの使い方の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。