SQL 構文リファレンス : CREATE DATABASE
 
このページをシェアする                  
CREATE DATABASE
CREATE DATABASE ステートメントにより、新しいデータベースを作成します。データベースにログインしているユーザーは誰でも、このステートメントを発行できます(ユーザーはまた、指定の場所でファイルを作成するために、オペレーティング システムでの権限を持っている必要があります)。
構文
CREATE DATABASE [IF NOT EXISTS] データベース名
DICTIONARY_PATH '辞書パス名' [DATA_PATH 'データ パス名'] [; 'データ パス名']...]
[NO_REFERENTIAL_INTEGRITY] [BOUND] [REUSE_DDF] [DBSEC_AUTHENTICATION]
[DBSEC_AUTHORIZATION] [V1_METADATA | V2_METADATA]
[ENCODING <'コード ページ名' | 'CPコード ページ番号' | DEFAULT>]
 
データベース名 ::= データベースのユーザー定義名
 
辞書パス名 ::= データ辞書ファイル(DDF)の場所のユーザー定義名
 
データ パス名 ::= データ ファイルの場所のユーザー定義名
 
コード ページ名 ::= 有効なコード ページの名前
 
CPコード ページ番号 ::= 'CP' で始まる有効なコード ページの番号
備考
ODBC を使用している場合は、CREATE DATABASE はデータベースのみを作成し、関連するデータ ソース名(DSN)は作成しないということを覚えておいてください。DSN が必要な場合は、個別に作成する必要があります。『PSQL User's Guide』の ODBC データベース アクセスの設定を参照してください。
CREATE DATABASE ステートメントは、サーバー上で最初のデータベースを作成する場合には使用できません。ユーザーは、CREATE DATABASE ステートメントを発行する前にデータベースにログオンしていなければならないからです。そのため、事前に少なくとも 1 つはデータベースが存在している必要があります。
CREATE DATABASE ステートメントは、ストアド プロシージャおよびユーザー定義関数内では使用できません。
データベース名と IF NOT EXISTS 句
データベース名には、新しいデータベースの名前を指定します。データベース名はサーバー内で一意であり、識別子の規則に従っている必要があります。『Advanced Operations Guide』の識別子の種類別の制限を参照してください。
データベースが存在した場合、IF NOT EXISTS 句を省略していると、エラーが発生します(ステータス コード 2303)。IF NOT EXISTS 句を記述している場合は、エラーは返されません。
辞書パス
辞書パス名は、辞書ファイル(DDF)が存在する物理的な保管場所を指定します。この場所には、CREATE TABLE ステートメントを使用した場合、あるいは PSQL Control Center(PCC)を使ってテーブルを作成した場合に、データ ファイルも保存されます。『PSQL User's Guide』の辞書のロケーションを参照してください。
データ パス
データ パス名には、データベースのデータ ファイルが存在する可能性のある場所を指定します(下記の「メモ」を参照してください)。複数のパス名をセミコロンで区切って指定することができます。
データ パス名は、呼び出し元アプリケーションの分析視点からではなく、データベース エンジンの視点から有効であれば、どのようなパスでもかまいません。指定した場所は既に存在している必要があります。CREATE DATABASE ステートメントでディレクトリは作成されません。
データ ファイルに対し辞書ファイルと同じ場所を使用する場合は、データ パス名を省略します。データ パス名に空文字列を渡しても、同じ場所を指定することができます。たとえば、DATA_PATH '' という指定は、データ パスが空文字列であることを示します。
メモ: CREATE TABLE ステートメントまたは PCC を使用してテーブルを作成した場合、データ ファイルは指定した最初の辞書パス名に保存されます。辞書パス名を指定していない場合、データ ファイルは辞書パス名の場所に作成されます。

データ パス名は、Distributed Tuning Interface(DTI)を介してテーブルを作成している場合に有用です。DTI 関数の PvAddTable では、データ ファイルを配置したい場所を指定できます。開発者リファレンス『Distributed Tuning Interface Guide』の PvAddTable() を参照してください。
参照整合性
デフォルトで、データベース エンジンは参照整合性を強要します。NO_REFERENTIAL_INTEGRITY 句を指定すると、データベース内に定義されているトリガーおよび参照整合性は強要されなくなります。
参照整合性の設定および Btrieve およびリレーショナル制約間の相互作用を参照してください。
BOUND
BOUND を指定すると、DDF がデータベースにバインドされます。バウンド データベースは、データベース名を単一の DDF のセットと関連付けます。この DDF は 1 つのデータ ファイルのセットしか参照しません。DDF は、既存の DDF か、CREATE DATABASE ステートメントの実行によって作成される DDF のいずれかがバインドされます。
DDF がバインドされると、複数のデータベースでその DDF を使用することも、複数の DDF のセットでデータ ファイルを参照することもできなくなります。
BOUND を指定しなければ、DDF はデータベースにバインドされません。
Advanced Operations Guide』のバウンド データベースと整合性の設定を参照してください。
辞書ファイル
REUSE_DDF キーワードは、既存の DDF をデータベースと関連付けます。既存の DDF は辞書パス名の場所になければなりません。
REUSE_DDF を省略すると、辞書パス名の場所に DDF が既に存在していない限り、新しい DDF が作成されます。DDF が辞書パス名の場所に存在すれば、新しい DDF が作成される代わりに、既存の DDF がデータベースと関連付けられます。
セキュリティ
データベース エンジンは、MicroKernel エンジンの 3 つのセキュリティ モデルをサポートしています。
クラシック。コンピューターへのログインに成功したユーザーは、データ ファイルに対してユーザーに割り当てられているファイル システム権限のレベルに従って、データベース コンテンツへのアクセス権を持ちます。ファイル システム権限はオペレーティング システムによって割り当てられます。
データベース。データベースのユーザー アカウントはオペレーティング システムのユーザー アカウントとは関係ありません。データに対するユーザーのアクセス権は、データベースに設定されているユーザー権限によって決定されます。
混合。このポリシーは、ほか 2 つのポリシーの側面を持っています。ユーザーはオペレーティング システムのユーザー名とパスワードを使ってログインしますが、データに対するユーザーのアクセス権はデータベースに設定されているユーザー権限によって決定されます。
セキュリティの完全な説明については、『Advanced Operations Guide』の PSQL セキュリティの章を参照してください。
DBSEC_AUTHENTICATION および DBSEC_AUTHORIZATION キーワードにより、データベースのセキュリティ ポリシーを設定します。
ステートメントにキーワードを含んでいるかいないか
セキュリティ モデル
DBSEC_AUTHENTICATION
DBSEC_AUTHORIZATION
クラシック
データベース
混合
省略
省略
* 
 
 
含む
含む
 
* 
 
省略
含む
 
 
* 
メタデータのバージョン
リレーショナル エンジンでは、メタデータでバージョン 1(V1)とバージョン 2(V2)という 2 つのバージョンをサポートします。メタデータのバージョンは、そのデータベース内のすべてのデータ辞書ファイル(DDF)に適用されます。デフォルトは "メタデータ バージョン 1" です。
ほかにも特性はありますが、メタデータ バージョン 2 では、多くの識別子名に最大 128 バイトの名前を付けることができ、ビューおよびストアド プロシージャに対する権限が認められています。詳しい説明については、PSQL メタデータを参照してください。
メタデータ バージョン 1 を指定する場合、V1_METADATA キーワードは含めても省略してもかまいません。メタデータ バージョン 2 を指定する場合は、V2_METADATA キーワードを含める必要があります。
エンコード
エンコードは文字セットを表す標準規格です。文字データは、コンピューターがデジタル処理できる標準形式に変換する、つまりエンコードする必要があります。エンコードは、PSQL データベース エンジン(サーバー)と PSQL クライアント アプリケーションとの間で規定する必要があります。互換性のあるエンコードを使用すれば、サーバーとクライアントでデータが正しく変換されます。
エンコードのサポートは、データベース コード ページとクライアント エンコードに分割されました。エンコードの 2 つのタイプは、別個のものですが相互に関係しています(『Advanced Operations Guide』のデータベース コード ページとクライアント エンコードを参照してください)。
データベース コード ページおよびクライアント エンコードは、リレーショナル エンジンのみに適用されます。MicroKernel エンジンには影響がありません。
コード ページは、名前または 'CP' の後にコード ページ番号を続けて指定します。いずれも、一重引用符で囲む必要があります。たとえば、有効な名前は 'UTF-8' であり、有効な番号は 'CP1251' です。
Windows、Linux、および OS X オペレーティング システムは共に、OS エンコードと呼ばれるデフォルトのエンコードがあります。デフォルトの OS エンコードはオペレーティング システム間で異なります。キーワード DEFAULT を使用すると、サーバーの OS エンコードを指定します。
ENCODING キーワードが指定されていない場合、データベースのデフォルトであるサーバーの OS エンコードになります。
無効なコード ページ番号やコード ページ名を指定すると、"コード ページの値が不正です" というエラーが返されます。
複数のデータベースを使用する SQL ステートメントでは、すべてのデータベースで同じコード ページを使用していることを確認する必要があります。そうしないと、文字データが正しく返されません。
メモ: データベース エンジンは、アプリケーションがデータベースに追加するデータおよびメタデータのエンコードを検証しません。エンジンは、すべてのデータが、『Advanced Operations Guide』のデータベース コード ページとクライアント エンコードで説明されているようにサーバーまたはクライアントのエンコードを使用して入力されるものと想定しています。

複数のデータベースを使用する SQL ステートメント(複数データベースの結合など)では、すべてのデータベースでデータベース コード ページが同じであることを確認してください。そうしないと、文字データが正しく返されません。
有効なコード ページ名とコード ページ番号
サポートされるコード ページ名とコード ページ番号は PCC で一覧表示することができます。PCC を起動して[データベースの新規作成]ダイアログを開きます(『PSQL User's Guide』の新規データベースを作成するにはを参照してください)。[データベース コード ページ]オプションで、[コード ページの変更]をクリックします。表示されるダイアログで[データベース コード ページ]をクリックすると、使用できるコード ページの一覧が表示されます。
Linux および OS X では、dbmaint ユーティリティの man ページを参照すると、使用できるコード ページ名とコード ページ番号の一覧が表示されます。この例については、『PSQL User's Guide』の dbmaint を参照してください。
次の例は、"inventorydb" という名前のデータベースを作成し、DDF の場所をドライブ D: の "mydbfiles\ddf_location" フォルダーと指定しています。"d:\mydbfiles\ddf_location" には DDF が存在しないため、DDF が新規に作成されます。データ ファイルも DDF と同じ場所に保存されます。データベースはメタデータ バージョン 1 を使用します。
CREATE DATABASE inventorydb DICTIONARY_PATH 'D:\mydbfiles\ddf_location'
============ 
次の例は、"HRUSBenefits" という名前のデータベースがまだ存在していなければ作成します。DDF の場所をドライブ C: の "HRDatabases\US" フォルダーとし、データ ファイルが存在する可能性のある場所として、C: ドライブの "HRDatabases\US\DataFiles" ディレクトリと、E: ドライブの "Backups\HRUSData" ディレクトリを指定しています(データ パスの「メモ」を参照してください)。DDF が DICTIONARY_PATH に存在する場合は、既存の DDF が使用されます。データベースはメタデータ バージョン 1 を使用します。
CREATE DATABASE IF NOT EXISTS HRUSBenefits DICTIONARY_PATH 'C:\HRDatabases\US'
DATA_PATH 'C:\HRDatabases\US\DataFiles ; E:\Backups\HRUSData' REUSE_DDF
============ 
次の例は、"EastEurope" という名前のデータベースを作成します。DDF の場所をドライブ C: の "Europe\DbaseFiles" フォルダーとし、DDF を新規に作成して、それをデータベースにバインドします。また、セキュリティ ポリシーを「混合」に設定し、メタデータ バージョン 2 を使用します。
CREATE DATABASE EastEurope DICTIONARY_PATH 'C:\Europe\DbaseFiles' BOUND
DBSEC_AUTHORIZATION V2_METADATA
============ 
次の例は、"Region5Acct" という名前のデータベースを作成し、DDF の場所にドライブ D: の "Canada\Region5\Accounting" を指定し、データベース コード ページにサーバーで使用されているデフォルトのコード ページを設定します。
CREATE DATABASE Region5Acct DICTIONARY_PATH 'D:\Canada\Region5\Accounting'
ENCODING DEFAULT
============ 
次の例は、"Region2Inventory" という名前のデータベースを作成し、DDF の場所にドライブ G: の "Japan\Region2" を指定し、データベース コード ページ 932 を設定します。
CREATE DATABASE Region2Inventory DICTIONARY_PATH 'G:\Japan\Region2' ENCODING 'CP932'
============ 
次の例は、"VendorCodes" という名前のデータベースを作成し、DDF の場所にドライブ C: の "Capitol_Equipment\Milling" を指定します。DDF を新規作成してデータベースにバインドします。さらに、セキュリティ ポリシーを「混合」に設定してメタデータ バージョン 2 を使用し、データベース コード ページに 1252 を設定します。
CREATE DATABASE VendorCodes DICTIONARY_PATH 'C:\Capitol_Equipment\Milling' BOUND
DBSEC_AUTHORIZATION V2_METADATA ENCODING 'CP1252'
関連項目
DROP DATABASE