DROP VIEW

DROP VIEWはビューを削除するSQL文である。

Oracle

Oracle Database における DROP VIEW 文の構文を以下に示す。

DROP VIEW [schema.]view [ CASCADE CONSTRAINTS ]
schema
削除するビューが存在するスキーマの名前を指定する。自分のスキーマ内にあるビューを削除する場合は、スキーマ名の指定を省略できる。
SQL> DROP VIEW tsuka.employee;
view
削除するビューの名前を指定する。
SQL> DROP VIEW employee;
CASCADE CONSTRAINTS
外部キー制約ごとビューを削除する。

削除しようとする表の中に、他の表から外部キー制約で参照されている列が含まれている場合はエラーとなり、ビューは削除できない。これは、参照先のビューが削除されてしまうと、参照元の外部キー制約がすべて制約違反になってしまい、データの整合性が無くなってしまうからである。

外部キー制約で参照されている表
図1 外部キー制約で参照されている表

この場合、 CASCADE CONSTRAINTS 句を指定すると、参照元の外部キー制約ごとビューを削除することができる。

外部キー制約ごとビューを削除
図2 外部キー制約ごとビューを削除

外部キー制約ごとビューを削除する例を以下に示す。

SQL> DROP VIEW employee CASCADE CONSTRAINTS;

必要な権限

自分のスキーマ内にあるビューを削除するには、とくに権限は必要ない。

削除するビューが自分のスキーマ内にない場合は、DROP ANY VIEWシステム権限が必要である。

MySQL

DROP VIEW [ IF EXISTS ] view [, ...]  [ RESTRICT | CASCADE ]
IF EXISTS
存在しないビューを指定した場合でもエラーを発生させない。
RESTRICT
指定しても無視される。
CASCADE
指定しても無視される。

PostgreSQL

PostgreSQL における DROP VIEW 文の構文を以下に示す。

DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
IF EXISTS
ビューが存在しない場合でもエラーにしない。 この場合注意メッセージが発行される。
name
削除するビューの名前を指定する。
CASCADE
削除するビューに依存しているオブジェクトを自動的に削除し、さらにそれらのオブジェクトに依存するすべてのオブジェクトも削除する。
RESTRICT
依存するオブジェクトがある場合は、ビューの削除を失敗させる。これはデフォルトの動作であり、CASCADE 句を指定しなければ、RESTRICT 句を指定する必要はない。

SQL Server

SQL Server における DROP VIEW 文の構文を以下に示す。

DROP VIEW [ IF EXISTS ] [ schema . ] view [ ...,n ] [ ; ] 
IF EXISTS
指定されたビューが存在する場合にのみ削除する。
schema
削除するビューが存在するスキーマの名前を指定する。
view
削除するビューの名前を指定する。

関連SQL