PostgreSQL | データベース | データベースの削除(DROP DATABASE)

DROP DATABASE コマンドを使用して、作成済みのデータベースを削除する方法について説明する。

データベースを削除する

作成済みのデータベースを削除するには、DROP DATABASE コマンドを使用する。形式は次のとおりである。

DROP DATABASE [ IF EXISTS ] name

削除するデータベース名 (name) を指定してデータベースを削除する。

データベースを削除するには、コマンドを実行するロールがスーパーユーザーであるか、データベース所有者である必要がある。また、コマンドを実行するロールや別のロールが、削除しようとしているデータベースに接続している間は削除できない。削除するには、削除対象とは別のデータベースに接続しておく必要がある。別のデータベースに接続する方法は「指定したデータベースに接続する」を参照する。

それでは実際に試してみる。作成された devkuma2 データベースを削除する。次のように実行する。

postgres=# drop database devkuma2;
DROP DATABASE
postgres=#

データベースが削除された。

続いて、データベース一覧を表示して確認する。

postgres=# \l
                                      데이터베이스 목록
   이름    |  소유주  | 인코딩 |     Collate      |      Ctype       |      액세스 권한
-----------+----------+--------+------------------+------------------+-----------------------
 devkuma   | postgres | UTF8   | Korean_Korea.949 | Korean_Korea.949 |
 postgres  | postgres | UTF8   | Korean_Korea.949 | Korean_Korea.949 |
 rabbit    | orange   | UTF8   | Korean_Korea.949 | Korean_Korea.949 |
 sample    | postgres | UTF8   | Korean_Korea.949 | Korean_Korea.949 |
 template0 | postgres | UTF8   | Korean_Korea.949 | Korean_Korea.949 | =c/postgres          +
           |          |        |                  |                  | postgres=CTc/postgres
 template1 | postgres | UTF8   | Korean_Korea.949 | Korean_Korea.949 | =c/postgres          +
           |          |        |                  |                  | postgres=CTc/postgres
(6개 행)


postgres=#

先ほど削除した devkuma2 がデータベース一覧に表示されないことを確認できる。

接続中のデータベースを削除しようとするとどうなるか確認してみる。devkuma データベースに接続する。

postgres=# \c devkuma
접속정보: 데이터베이스="devkuma", 사용자="postgres".
devkuma=#

devkuma データベースに接続している状態で、devkuma データベースを削除してみる。

devkuma=# drop database devkuma;
오류:  현재 열려 있는 데이터베이스는 삭제할 수 없습니다
devkuma=#

次のように「오류: 현재 열려 있는 데이터베이스는 삭제할 수 없습니다」というエラーが表示され、データベースの削除に失敗する。

このように、現在接続しているデータベースは削除できない。

ここまで、DROP DATABASE コマンドを使用してデータベースを削除する方法について説明した。