概要
PostgreSQLに新しいデータベースを作成する方法についてです。
データベースを作成するには、以下の2つの方法があります。
- コマンドプロンプト等でcreatedbコマンドを実行
- psqlなどでCREATE DATABASEコマンド(SQLコマンド)を実行
今回は以下の環境で確認しています。
OS | Windows 10 64bit |
バージョン | PostgreSQL 16.4 |
それぞれ2つの方法について説明します。
createdbコマンド
createdbの構文は以下の通りです。
createdb [接続パラメータ...] [オプション...] [データベース名 [ディスクリプション]]
データベース名は作成するデータベースの名前です。この名前はクラスタ内のすべてのPostgreSQLデータベースの中で一意でなければなりません。デフォルトではユーザと同じ名前となります。
ディスクリプションは作成するデータベースに関連付けるコメントです。
通常はこのコマンドを実行したユーザが作成したデータベースの所有者になります。
主なオプションは以下の通りです。
オプション | 内容 |
---|---|
-D tablespace –tablespace=tablespace | データベースのテーブル空間の指定をする。 |
-E encoding –encoding=encoding | データベースで使用する文字コードを指定します。(使用できる文字セットについては、公式ドキュメント参照) |
-O owner –owner=owner | データベースの所有者となるデータベースユーザを指定します。 |
-V –version | createdbのバージョンを表示し、終了します。 |
-? –help | createdbのコマンドライン引数の使用方法を表示し、終了します。 |
接続パラメータについては、createuserと同じなのでそちらを参照してください。
データベース名をtestdb1、所有者をtestuser1、文字コードをUTF8としたときのコマンドの例です。
接続ユーザはtestuser1です。(データベース作成の許可有のユーザ)
createdb -E UTF8 -O testuser1 -U testuser1 testdb1
実行すると以下のようになります。

パスワードの入力は、-Uオプションで指定したtestuser1のパスワードです。
createdbコマンドは、次に説明するCREATE DATABASEのラッパーです。そのためどちらを使っても違いはありません。
CREATE DATABASE (SQL)
SQLのCREATE DATABASEの構文は以下の通りです。
CREATE DATABASE データベース名 [WITH] [オプション...]
データベース名は作成するデータベースの名前です。この名前はクラスタ内のすべてのPostgreSQLデータベースの中で一意でなければなりません。
主に以下のオプションがあります。
オプション | 内容 |
---|---|
OWNER [=] user_name | データベースを所有するユーザ名を指定します。 |
ENCODING [=] encoding | データベースで使用する文字コードを指定します。(使用できる文字セットについては、公式ドキュメント参照) |
TABLESPACE [=] tablespace_name | データベースのテーブル空間の指定をする。 |
データベース名をtestdb2、所有者をtestuser2、文字コードをUTF8としたときのコマンドの例です。
CREATE DATABASE testdb2 WITH OWNER=testuser2 ENCODING=UTF8 ;
psqlにてスーパーユーザで接続後、SQLを実行すると以下のようになります。

終わりに
以上でデータベースの作成についての説明は終了です。
psqlでデータベース一覧を表示すると、testdb1、testdb2が作成されていることが確認できます。
