CREATE DATABASEは、新しいPolarDBデータベースを作成します。
説明
CREATE DATABASEは、新しいPolarDBデータベースを作成します。
データベースを作成するには、スーパーユーザーであるか、特別なCREATEDB権限が必要です。
デフォルトでは、新しいデータベースは標準のシステムデータベースtemplate1を複製して作成されます。 別のテンプレートは、templateを記述することで指定できます。 特に、TEMPLATE template0を記述すると、PostgreSQLのバージョンで定義された標準オブジェクトのみを含む、元のデータベース (ユーザー定義オブジェクトが存在せず、システムオブジェクトが変更されていないもの) を作成できます。 これは、template1に追加された可能性のあるインストールローカルオブジェクトをコピーしないようにする場合に便利です。
概要
データベース名の作成
[ [ WITH ] [ OWNER [=] user_name ]
[ TEMPLATE [=] template ]
[ ENCODING [=] encoding ]
[LOCALE [=] ロケール]
[ LC_COLLATE [=] lc_collate ]
[ LC_CTYPE [=] lc_ctype ]
[ TABLESPACE [=] tablespace_name ]
[ALLOW_CONNECTIONS [=] allowconn]
[接続制限 [=] connlimit]
[IS_TEMPLATE [=] istemplate ] ] パラメーター
name: 作成するデータベースの名前。user_name: 新しいデータベースを所有するユーザーのロール名、またはデフォルトを使用するDEFAULT(つまり、コマンドを実行するユーザー) 。 別のロールが所有するデータベースを作成するには、そのロールの直接または間接のメンバーであるか、スーパーユーザーである必要があります。template: 新しいデータベースを作成するテンプレートの名前、またはデフォルトのテンプレート (template1) を使用するDEFAULT。encoding: 新しいデータベースで使用する文字セットのエンコーディング。 デフォルトのエンコーディング (つまり、テンプレートデータベースのエンコーディング) を使用するには、文字列定数 ('SQL_ASCII'など) 、整数エンコーディング番号、またはDEFAULTを指定します。locale:LC_COLLATEとLC_CTYPEを一度に設定するためのショートカットです。 これを指定した場合、これらのパラメーターのいずれも指定できません。その他のロケール設定
lc_messages、lc_metary、lc_numeric、およびlc_timeは、データベースごとに固定されておらず、このコマンドでは設定されていません。 それらを特定のデータベースのデフォルトにしたい場合は、ALTER database... を使用できます。 セット
lc_collate: 新しいデータベースで使用する照合順序 (LC_COLLATE) 。 これは、文字列に適用されるソート順序 (order BYを使用するクエリなど) や、テキスト列のインデックスで使用される順序に影響します。 デフォルトでは、テンプレートデータベースの照合順序が使用されます。 追加の制限については以下を参照してください。
lc_ctype: 新しいデータベースで使用する文字分類 (LC_CTYPE) 。 これは、文字のカテゴリ化、例えば、下位、上位、および桁に影響を及ぼす。 デフォルトでは、テンプレートデータベースの文字分類が使用されます。 追加の制限については以下を参照してください。
tablespace_name: 新しいデータベースに関連付けられるテーブルスペースの名前、またはテンプレートデータベースのテーブルスペースを使用するためのDEFAULT。 このテーブルスペースは、このデータベースで作成されるオブジェクトに使用されるデフォルトのテーブルスペースになります。 詳細については、「CREATE TABLESPACE」をご参照ください。
allowconn: falseの場合、誰もこのデータベースに接続できません。 デフォルトはtrueで、接続が許可されます (GRANT /REVOKE CONNECTなどの他のメカニズムによる制限を除く) 。
connlimit: このデータベースへの同時接続数。 -1 (デフォルト) は制限なしを意味します。
istemplate: trueの場合、このデータベースはCREATEDB権限を持つユーザーが複製できます。false (デフォルト) の場合、スーパーユーザーまたはデータベースの所有者のみが複製できます。
オプションのパラメータは、上記の順序だけでなく、任意の順序で書き込むことができます。
注
CREATE DATABASEはトランザクションブロック内では実行できません。
「データベースディレクトリを初期化できませんでした」という行に沿ったエラーは、データディレクトリに対する不十分な権限、ディスク全体、またはその他のファイルシステムの問題に関連している可能性があります。
DROP DATABASEを使用してデータベースを削除します。
プログラムcreatedbは、便宜上、このコマンドに関するラッパープログラムである。
データベースレベルの構成パラメーター (ALTER Databaseで設定) とデータベースレベルのアクセス許可 (GRANTで設定) は、テンプレートデータベースからコピーされません。
テンプレートとして名前を指定することによってテンプレート1以外のデータベースをコピーすることは可能ですが、これは (まだ) 汎用の「copy database」機能として意図されていません。 主な制限は、テンプレートデータベースのコピー中に他のセッションをテンプレートデータベースに接続できないことです。 CREATE DATABASEは、開始時に他の接続が存在すると失敗します。それ以外の場合、テンプレートデータベースへの新しい接続は、CREATE databaseが完了するまでロックアウトされます。
新しいデータベースに指定された文字セットエンコーディングは、選択したロケール設定 (LC_COLLATEおよびLC_CTYPE) と互換性がある必要があります。 ロケールがC (または同等のPOSIX) の場合、すべてのエンコーディングが許可されますが、他のロケール設定では、適切に機能するエンコーディングは1つだけです。 (ただし、Windowsの場合、UTF-8エンコーディングは任意のロケールで使用できます。) CREATE DATABASEでは、スーパーユーザーはロケールの設定に関係なくSQL_ASCIIエンコーディングを指定できますが、この選択は推奨されず、ロケールと互換性のないデータがデータベースに保存されている場合、文字列関数の誤動作が発生する可能性があります。
エンコードとロケールの設定は、テンプレートとしてtemplate0を使用する場合を除き、テンプレートデータベースの設定と一致する必要があります。 これは、他のデータベースに指定されたエンコーディングと一致しないデータが含まれているか、ソート順序がLC_COLLATEおよびLC_CTYPEの影響を受けるインデックスが含まれている可能性があるためです。 このようなデータをコピーすると、新しい設定に従ってデータベースが破損します。ただし、template0には、影響を受けるデータやインデックスが含まれていないことがわかっています。
CONNECTION LIMITオプションはおよそのみ適用されます。データベースに1つの接続「スロット」が残っている場合、2つの新しいセッションがほぼ同時に開始すると、両方が失敗する可能性があります。 また、スーパーユーザーやバックグラウンドのワーカープロセスに対しては制限が適用されません。
例
新しいデータベースを作成するには:
データベースの作成lusiadas;デフォルトのテーブルスペースがsalesspaceで、ユーザーsalesappが所有するデータベースsalesを作成するには:
データベース販売所有者の作成salesapp TABLESPACE salesspace;異なるロケールでデータベース音楽を作成するには:
データベースの作成音楽
LOCALE 'sv_SE.utf8'
テンプレートtemplate0; この例では、指定されたロケールがtemplate1のロケールと異なる場合、TEMPLATE template0句が必要です。 (そうでない場合は、ロケールを明示的に指定するのは冗長です。)
異なるロケールと異なる文字セットのエンコーディングでデータベースmusic2を作成するには:
データベースの作成music2
LOCALE 'sv_SE.iso885915'
LATIN9のエンコーディング
テンプレートtemplate0; 指定されたロケールとエンコードの設定が一致する必要があります。
ロケール名はオペレーティングシステムに固有であるため、上記のコマンドはどこでも同じように機能しない可能性があることに注意してください。