CREATE DATABASE name [ [ WITH ] [ OWNER [=] dbowner ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ TABLESPACE [=] tablespace ] ]
CREATE DATABASEは新しい PostgreSQLデータベースを作成します。
データベースを作成するためには、スーパーユーザであるか、特別なCREATEDB権限が必要です。 CREATE USERを参照してください。
通常、データベースの作成者がその新しいデータベースの所有者になります。 スーパーユーザは、OWNER句を使用することにより、他のユーザを所有者とするデータベースを作成できます。 スーパーユーザは、特別な権限を保持していないユーザを所有者とするデータベースを作成できます。 スーパーユーザではないCREATEDB権限を保持するユーザは、自分自身が所有するデータベースのみ作成できます。
デフォルトでは、新しいデータベースは標準システムデータベースtemplate1を複製することによって作成されます。 別のテンプレートはTEMPLATE nameと記述することで指定できます。 特に、TEMPLATE template0と記述することで、使用しているPostgreSQLのバージョンによって定義済みの標準オブジェクトのみを持つ新しいデータベースを作ることができます。 これは、もしtemplate1に追加された、独自にインストールしたオブジェクトのコピーを避けたいという場合に便利です。
作成するデータベースの名前です。
新しいデータベースを所有するデータベースユーザの名前です。 デフォルト設定(つまり、コマンドを実行したユーザ)を使用する場合はDEFAULTとします。
新しいデータベースを作成元となるテンプレートの名前です。 デフォルトテンプレート(template1)を使う場合はDEFAULTです。
新しいデータベースで使われる文字セット符号化方式です。 文字列定数(例えば'SQL_ASCII')、もしくは整数の符号化方式番号、もしくはデフォルトの符号化方式を使うDEFAULTです。 PostgreSQLサーバでサポートされる文字セットは項20.2.1で説明します。
新しいデータベースに関連付けされるデフォルトのテーブル空間名、もしくは、テンプレートデータベースのテーブル空間を使用することを示すDEFAULTです。 このテーブル空間が、このデータベースで作成されるオブジェクトのデフォルトのテーブル空間となります。 詳細はCREATE TABLESPACEを参照してください。
省略可能なパラメータは、上述の順番だけでなく、任意の順番で記述できます。
CREATE DATABASEはトランザクションブロックの内側では実行できません。
ほとんどの場合、"could not initialize database directory"という行が含まれるエラーは、データディレクトリの権限不足、ディスク容量不足などファイルシステムについての問題に関連するものです。
データベースを削除するにはDROP DATABASEを使用してください。
createdbプログラムは利便性のために提供される、このコマンドのラッパプログラムです。
template1以外のデータベースの名前をテンプレートに指定することによってデータベースをコピーすることは可能ですが、これは(まだ)一般的な目的の"COPY DATABASE"機能として意図されているわけではありません。 テンプレートとして使用するデータベースは読み取り専用として扱うことを推奨します。 詳細は項18.3を参照してください。