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 句を指定すると、データベース内に定義されているトリガーおよび参照整合性は強要されなくなります。
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 を参照してください。
例
このセクションでは、CREATE DATABASE の例を示します。
次の例は、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'
関連項目