.\\" auto-generated by docbook2man-spec $Revision: 1.2 $
.TH "CREATE DATABASE" "" "2003-08-02" "SQL - 言語" "SQL コマンド"
.SH NAME
CREATE DATABASE \- 新しいデータベースの作成
.SH SYNOPSIS
.sp
.nf
CREATE DATABASE \fIname\fR
    [ [ WITH ] [ OWNER [=] \fIdbowner\fR ]
           [ LOCATION [=] '\fIdbpath\fR' ]
           [ TEMPLATE [=] \fItemplate\fR ]
           [ ENCODING [=] \fIencoding\fR ] ]
  
.sp
.fi
.SS "入力"
.PP
.TP
\fB\fIname\fB\fR
作成するデータベースの名前です。
.TP
\fB\fIdbowner\fB\fR
新しいデータベースを所有するデータベースユーザの名前です。もしくは、デフォルト設定 (つまり、コマンドを実行したユーザ) を使用するには、DEFAULT とします。
.TP
\fB\fIdbpath\fB\fR
新しいデータベースを格納するためのファイルシステムの代わりの場所で、文字列リテラルとして指定されます。 もしくはデフォルトの場所を使う場合はDEFAULTです。
.TP
\fB\fItemplate\fB\fR
新しいデータベースを作成するテンプレートの名前、もしくはデフォルトテンプレート（template1）を使うDEFAULTです。
.TP
\fB\fIencoding\fB\fR
新しいデータベースで使うためのマルチバイト符号化方式です。文字列リテラル名（たとえば'SQL_ASCII'）、もしくは整数の符号化番号、もしくはデフォルトの符号化方式を使う DEFAULT です。
.PP
.SS "出力"
.PP
.TP
\fBCREATE DATABASE\fR
コマンドが問題なく処理された場合に返されるメッセージです。
.TP
\fBERROR: user '\fIusername\fB' is not allowed to create/drop databases\fR
データベースを作成するには、特別な CREATEDB 権限が必要です。CREATE USER [\fBcreate_user\fR(l)]を参照してください。
.TP
\fBERROR: createdb: database "\fIname\fB" already exists\fR
これは \fIname\fR で指定されたデータベースがすでに存在する場合のエラーです。
.TP
\fBERROR: database path may not contain single quotes\fR
データベースの場所 \fIdbpath\fR に単一引用符が含まれてはいけません。これはデータベースディレクトリを作成するシェルコマンドが問題なく実行できるようにするために要求されるものです。
.TP
\fBERROR: CREATE DATABASE: may not be called in a transaction block\fR
もし稼働中の明示的なトランザクションブロックがある場合\fBCREATE DATABASE\fR は呼び出せません。まずトランザクションを終了させてください。
.TP
\fBERROR: Unable to create database directory '\fIpath\fB'.\fR
.TP
\fBERROR: Could not initialize database directory.\fR
これらはデータディレクトリに対する権限不足、ディスク容量不足、もしくはその他のファイルシステムの問題の可能性があります。データベースサーバを走らせているユーザはその場所へのアクセス権限を持っていなければいけません。
.PP
.SH "説明"
.PP
\fBCREATE DATABASE\fRは新しい PostgreSQLデータベースを作成します。
.PP
通常、データベースの作成者がその新しいデータベースの所有者になります。 スーパーユーザは、\fBOWNER\fR 句を使用することにより、他のユーザを所有者とするデータベースを作成できます。 スーパーユーザは、特別な権限を保持していなくても、他のユーザを所有者とするデータベースを作成できます。 スーパーユーザではない CREATEDB 権限を保持するユーザは、自分自身が所有するデータベースのみ作成できます。
.PP
たとえば別のディスクにデータベースを格納したりするために、代わりの場所を指定することができます。そのパスは initlocation [\fBinitlocation\fR(1)] コマンドであらかじめ用意しておく必要があります。
.PP
もしパス名がスラッシュ(/)を含まない場合、環境変数名として解釈されます。 この環境変数はサーバプロセスに知らせなければなりません。 この方法でデータベース管理者はデータベースを作ることができる場所を管理することができます（慣習的な選択例は \fBPGDATA2\fR です）。もしサーバがALLOW_ABSOLUTE_DBPATHSでコンパイルされている場合（デフォルトではそうではありません）、スラッシュで始まることで識別される絶対パス名（たとえば、\fI/usr/local/pgsql/data\fR）も使用することができます。
.PP
デフォルトでは、新しいデータベースは標準システムデータベース template1 を複製することによって作成されます。別のテンプレートは TEMPLATE =\fIname\fR と書くことで指定できます。特に、TEMPLATE = template0と書くことで、使用している \fBPostgreSQL\fR のバージョンによって定義済みの標準オブジェクトのみを持つ新しいデータベースを作ることができます。これは、もし template1 に追加された、独自にインストールしたオブジェクトのコピーを避けたいという場合に便利です。 
.PP
もし使用しているサーバがマルチバイト符号化をサポートするようにコンパイルされている場合、オプションの符合化方式パラメータを使用してデータベース符合化方式を選択することができます。指定されないと、選択されたテンプレートデータベースで使われる符合化方式がデフォルトになります。
.PP
オプションのパラメータは上記で示された順番だけでなく、どのような順番でも書くこともできます。
.SS "注釈"
.PP
\fBCREATE DATABASE\fR は PostgreSQL の 言語拡張です。
.PP
データベースを削除するには   DROP DATABASE   [\fBdrop_database\fR(l)]を使用して下さい。
.PP
createdb [\fBcreatedb\fR(1)] プログラムは利便性のために提供される、このコマンドのシェルスクリプトラッパです。
.PP
絶対パス名による代わりのデータベースの場所の指定を使用することには、セキュリティとデータの整合性の問題がありますので、デフォルトではバックエンドに認識される環境変数のみが代わりの場所として指定できます。より詳細は管理者用ガイドを参照してください。
.PP
template1 以外のデータベースの名前をテンプレートに指定することによってデータベースをコピーすることは可能ですが、これは(まだ) 一般的な目的の COPY DATABESE 機能として意図されているわけではありません。テンプレートとして使用するデータベースは読み取り専用として扱うことを推奨します。より詳細は \fI管理者用ガイド\fR を参照して下さい。
.SH "使用方法"
.PP
新しいデータベースを作成するには以下のようにします。
.sp
.nf
olly=> \fBcreate database lusiadas;\fR
   
.sp
.fi
.PP
別の領域 \fI~/private_db\fR に新しいデータベースを作成するには以下のようにします。
.sp
.nf
$ \fBmkdir private_db\fR
$ \fBinitlocation ~/private_db\fR
    The location will be initialized with username "olly".
This user will own all the files and must also own the server process.
Creating directory /home/olly/private_db
Creating directory /home/olly/private_db/base

initlocation is complete.
    
   
$ \fBpsql olly\fR
Welcome to psql, the PostgreSQL interactive terminal.
 
Type:  \\copyright for distribution terms
       \\h for help with SQL commands
       \\? for help on internal slash commands
       \\g or terminate with semicolon to execute query
       \\q to quit

olly=> \fBCREATE DATABASE elsewhere WITH LOCATION = '/home/olly/private_db';\fR
CREATE DATABASE
   
.sp
.fi
.SH "互換性"
.SS "SQL92"
.PP
SQL92には \fBCREATE DATABASE\fR 文はありません。 データベースは、実装で生成が定義されるカタログと同等のものです。
