PostgreSQLにデータベースを作成する

PostgreSQL

概要

PostgreSQLに新しいデータベースを作成する方法についてです。
データベースを作成するには、以下の2つの方法があります。

  • コマンドプロンプト等でcreatedbコマンドを実行
  • psqlなどでCREATE DATABASEコマンド(SQLコマンド)を実行

今回は以下の環境で確認しています。

OSWindows 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

実行すると以下のようになります。

createdbコマンド データベース作成

パスワードの入力は、-Uオプションで指定したtestuser1のパスワードです。
createdbコマンドは、次に説明するCREATE DATABASEのラッパーです。そのためどちらを使っても違いはありません。

createdbコマンドの詳細は、公式ドキュメントを参照してください。

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を実行すると以下のようになります。

CREATE DATABASE データベース作成SQLコマンド

CREATE DATABASEの詳細は、公式ドキュメントを参照してください。

終わりに

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

psql データベース一覧表示

タイトルとURLをコピーしました