テーブルを削除する(DROP TABLE)
作成済みのテーブルを削除する場合は DROP TABLE コマンドを使用します。ここでは PostgreSQL で作成済みのテーブルを削除する方法について解説します。
(Last modified: )
目次
テーブルを削除する
テーブルを削除するには DROP TABLE コマンドを使用します。次の書式を使います。
DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
テーブル名( name )のテーブルを削除します。
テーブルに対してビューや他のテーブルから外部キー参照が作成されていた場合、 RESTRICT が設定されていた場合はエラーとなります。 CASCADE を指定した場合はビューも併せて削除となり外部キー制約については外部キー制約のみが削除されます。特に指定しなかった場合は RESTRICT が指定されたものとして扱われます。
テーブルを削除するには、コマンドを実行するロールがスーパーユーザーか、テーブルの所有者か、テーブルが作成されているスキーマの所有者である必要があります。
-- --
それでは実際に試してみます。現在 mydb データベースの public スキーマに作成されているテーブルおよびビューは次の通りです。
\d
この中から bookmark テーブルを削除します。次のように実行してください。
drop table bookmark;
テーブルが削除されました。確認のためにあらためて \d コマンドを実行してみます。
bookmark テーブルが削除されていることが確認できます。
-- --
次に mybook テーブルを削除します。 mybook テーブルに対しては bookname ビューが作成されています。では次のように実行してください。
drop table mybook;
ERROR: 他のオブジェクトが依存しているためテーブルmybookを削除できません というエラーが表示されてテーブルの削除に失敗しました。 mybook テーブルのようにテーブルからビューが作成されている場合などには DROP TABLE コマンドを実行するときに CASCADE を指定する必要があります。
それでは次のように実行してください。
drop table mybook cascade;
テーブルの削除に成功しました。 mybook テーブルからは bookname ビューが作成されていましたが、 CASCADE を付けてテーブルを削除したので bookname ビューもあわせて削除されました。確認のため \d コマンドを実行してみます。
public スキーマの中にあった mybook テーブルと bookname ビューがまとめて削除されました。
-- --
DROP TABLE コマンドを使ってテーブルを削除する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。