データベースを作成する(CREATE DATABASE)
PostgreSQL では新しいデータベースを作成するために CREATE DATABASE コマンドを使用します。ここでは PostgreSQL でデータベースを新規に作成する方法について解説します。
(Last modified: )
新しいデータベースを作成する
データベースを作成するには CREATE DATABASE コマンドを使用します。書式は次の通りです。
CREATE DATABASE name [ [ WITH ] [ OWNER [=] user_name ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ LC_COLLATE [=] lc_collate ] [ LC_CTYPE [=] lc_ctype ] [ TABLESPACE [=] tablespace_name ] [ ALLOW_CONNECTIONS [=] allowconn ] [ CONNECTION LIMIT [=] connlimit ] [ IS_TEMPLATE [=] istemplate ] ]
オプションがいくつか用意されていますが、基本となる構文は次の通りです。
CREATE DATABASE name
データベース名( name )を指定して新しいデータベースを作成します。明示的に指定しない場合は、作成済みのテンプレートデータベース template1 をコピーしてデータベースが作成されます。
データベースを作成するにはコマンドを実行するロールがスーパーユーザーか、 CREATEDB 権限を持っている必要があります。
-- --
それでは実際に試してみます。 psql 上で次のように実行してください。
create database mydb;
データベースの作成が完了しました。
それでは作成済みのデータベース一覧を表示してみます。
\l
先ほど作成した mydb データベースが存在していることが確認できました。
文字セットや照合順序を指定してデータベースを作成する
データベースを作成するときにデータベースで使用する文字セット( ENCODING )や照合順序( LC_COLLATE )や文字のクラス( LC_CTYPE )は明示的に指定しなかった場合はデフォルトの値が使用されますが、これらは一度データベースを作成すると変更することができませんのでご注意ください。
もし明示的に文字セットを指定してデータベースを作成する場合は次の書式を使います。
CREATE DATABASE name ENCODING encoding LC_COLLATE lc_collate LC_CTYPE lc_ctype
なおロケール設定( LC_COLLATE と LC_CTYPE )がデフォルトで使用されるテンプレートの template1 のロケール設定と異なる場合、明示的にテンプレートとして template0 を使用する必要があります。
CREATE DATABASE name
TEMPLATE template0
ENCODING encoding
LC_COLLATE lc_collate
LC_CTYPE lc_ctype
-- --
それでは実際に試してみます。今回は文字セットとして EUC_JP1 、照合順序と文字のクラスとして 'Japanese_Japan.20932' を設定してデータベースを作成します。
create database mydb2 template template0 encoding EUC_JP lc_collate 'Japanese_Japan.20932' lc_ctype 'Japanese_Japan.20932';
文字セット、照合順序、そして文字クラスを指定して新しいデータベースを作成しました。
それでは作成済みのデータベース一覧を表示してみます。
\l
先ほど作成した mydb2 データベースが存在し、文字セットや照合順序が指定したものになっていることが確認できました。
-- --
CREATE DATABASE コマンドを使ってデータベースを作成する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。