5.3 データベースの作成

PostgreSQLのサーバには、以下の3つのデータベースがインストール時に作成されています。

  • postgres --- サーバ接続用のデフォルトのデータベース
  • template1 --- 新しいデータベースを作成する際のテンプレートになるカスタマイズが可能なデータベース
  • template0 --- template1と同じ。ただし、システム標準の設定のみが含まれており、ユーザによる変更不可

新しいデータベースを作成することにより、複数のデータベースを同時に利用できます。ただし、クライアントはデータベースごとに接続する必要があります。このページでは、データベースの作成・削除を行うクライアントアプリケーションとSQL文について説明します。

createdbコマンド

createdbは、新しいデータベースを作成します。形式は以下の通りです。

creaatedb [オプション] [データベース名]
  • データベース名は、作成するデータベースの名前です。省略時は、接続しているユーザ名になります。
  • オプションは、サーバへの接続情報と作成するデータベースに関するオプションです。主なものを以下に示すます。
オプション 省略値 説明
--host= (-h) Unixドメインソケット サーバを実行しているマシンのホスト名
またはUnixドメインソケットのディレクトリ
--port= (-p) 5432 サーバが接続監視を行っているTCPポート
--username= (-U) OSのユーザ名 接続するユーザの名前
--owner= (-O) コマンドを実行したユーザ名 新しいデータベースの所有者となるユーザ名
--encoding= (-E) UTF-8 データベース内で使用する文字コード
--locale= (-l)   データベース内で使用するロケール
--template (-T) template1 データベース作成に使用するテンプレートデータベース
--version (-V)   createdbのバージョンを表示して終了
--help (-?)   createdbに関するヘルプを表示して終了


例えば、postgresユーザで接続してnewdbデータベースを作成する場合は、以下のように指定します。

createdb -U postgres -O sato newdb

作成したnewdbデータベースの所有者は、satoになります。

CREATE DATABASE文

CREATE DATABASE文は、createdbコマンドと同じ機能を持つSQL文です。形式は以下の通りです。

CREATE DATABASE データベース名 [WITH オプション [...]]
  • データベース名は、作成するデータベースの名前です。
  • オプションは、作成するデータベースに関するオプションで、複数指定できます。主なものを以下に示すます。
    OWNER[=] 所有者のユーザ名
    ENCODING[=] 文字コード
    LOCALE[=] ロケール
    TEMPLATE[=] テンプレートデータベース

以下は、newdbデータベースを作成するCREATE DATABASE文です。

CREATE DATABASE newdb OWNER sato;

 

dropdbコマンド

dropdbは、既存のデータベースを削除します。削除できるのは、データベースの所有者かスーパーユーザです。形式は以下の通りです。

dropdb [オプション] データベース名
  • データベース名は、削除するデータベースの名前です。
  • オプションは、サーバへの接続情報とそれ以外のオプションです。主なものを以下に示すます。
オプション 省略値 説明
--host= (-h) Unixドメインソケット サーバを実行しているマシンのホスト名
またはUnixドメインソケットのディレクトリ
--port= (-p) 5432 サーバが接続監視を行っているTCPポート
--username= (-U) OSのユーザ名 接続するユーザの名前
--interactive (-i)   削除を行う前に確認のためのプロンプトを表示
--if-exists   指定したデータベースが存在しない場合でもエラーとしない
--version (-V)   dropdbのバージョンを表示して終了
--help (-?)   dropdbに関するヘルプを表示して終了


例えば、newdbデータベースを確認の上削除する場合は、以下のように指定します。

dropdb -U postgres -i newdb

 

DROP DATABASE文

DROP DATABASE文は、dropdbコマンドと同じ機能を持つSQL文です。形式は以下の通りです。

DROP DATABASE [IF EXISTS] データベース名
  • データベース名は、削除するデータベースの名前です。

以下は、newdbデータベースが存在すれば、それを削除するDROP DATABASE文です。

DROP DATABASE IF EXISTS newdb;