Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (A ~ D)

 

CREATE DATABASE 文

この文は、データベースを作成するために使用します。データベースはオペレーティング・システム・ファイルとして格納されます。

構文
CREATE DATABASE db-filename-string [ create-option ... ]
create-option : 
   [ ACCENT { RESPECT | IGNORE | FRENCH } ]
   [ ASE [ COMPATIBLE ] ]
   [ BLANK PADDING { ON | OFF } ]
   [ CASE { RESPECT | IGNORE } ]
   [ CHECKSUM { ON | OFF } ]
   [ COLLATION collation-label[ ( collation-tailoring-string ) ] ]
   [ DATABASE SIZE size { KB | MB | GB | PAGES | BYTES } ]
   [ DBA USER userid ]
   [ DBA PASSWORD password ]
   [ ENCODING encoding-label ]
   [ ENCRYPTED [ TABLE ] { algorithm-key-spec | OFF } ]
   [ JCONNECT { ON | OFF } ]
   [ PAGE SIZE page-size ]
   [ NCHAR COLLATION nchar-collation-label[ ( collation-tailoring-string ) ] ]
   [ [ TRANSACTION ] { LOG OFF | LOG ON [ log-filename-string ]
       [ MIRROR mirror-filename-string ] } ]
page-size :
2048 | 4096 | 8192 | 16384 | 32768
algorithm-key-spec:
ON
| [ ON ] KEY key [ ALGORITHM AES-algorithm ]
| [ ON ] ALGORITHM AES-algorithm KEY key
| [ ON ] ALGORITHM 'SIMPLE'
AES-algorithm : 
'AES' | 'AES256' | 'AES_FIPS' | 'AES256_FIPS'
key : 一重引用符で囲まれた文字列
パラメータ

ファイル名 (db-filename-stringlog-filename-stringmirror-filename-string) はオペレーティング・システム・ファイル名を含む文字列です。リテラル文字列として、一重引用符で囲んでください。

  • パスを指定する場合、後ろに n または x が続くすべての円記号 (\) は、2 つ重ねます。このようにエスケープすることによって、SQL の文字列のルールに従って、改行文字 (\n) または 16 進数字 (\x) として解釈されるのを回避できます。

    常に円記号をエスケープすると安全です。次に例を示します。

    CREATE DATABASE 'c:\\databases\\my_db.db'
    LOG ON 'e:\\logdrive\\my_db.log';
  • パスを指定しない場合、または相対パスで指定する場合、データベース・ファイルはデータベース・サーバの作業ディレクトリを基準に作成されます。トランザクション・ログ・ファイルのパスを指定しないと、データベース・ファイルと同じディレクトリにファイルが作成されます。データベース・ファイルとトランザクション・ログを、コンピュータの別々のディスクに保存することをおすすめします。

  • ファイル拡張子の指定がない場合、作成されるデータベース・ファイルには .db 拡張子、トランザクション・ログには .log 拡張子、トランザクション・ログ・ミラーには .mlg 拡張子が付けられます。

db-filename-string には utility_db を指定できません。この名前は、ユーティリティ・データベースのために予約されています。ユーティリティ・データベースの使用を参照してください。

  • ACCENT 句   この句は、データベースでのアクセント記号の区別を指定するときに使用します。この句のサポートは廃止されました。アクセント記号の区別を指定するには、COLLATION 句と NCHAR COLLATION 句に提供されている照合の適合化オプションを使用してください。

    ACCENT 句は、COLLATION 句または NCHAR COLLATION 句で指定した照合に UCA (Unicode Collation Algorithm) を使用する場合にのみ適用されます。ACCENT RESPECT 句を使用すると、文字のアクセント記号を考慮して UCA 文字列が比較されます。たとえば、e は e よりも小さいと扱われます。ACCENT FRENCH は ACCENT RESPECT と似ていますが、フランス語の規則に合わせてアクセント記号が右から左の方向で比較される点が異なります。ACCENT IGNORE 句を使用すると、アクセント記号を無視して文字列が比較されます。たとえば、e と e は同等です。

    データベースの作成時にアクセント記号の区別が指定されていない場合、比較とソートでのアクセント記号の区別は、デフォルトでは区別しないになります。ただし、UCA 照合を使用して作成された日本語のデータベースは例外であり、デフォルトのアクセント記号の区別は区別するになります。

    文字セットの詳細については、国際言語と文字セットを参照してください。

  • ASE COMPATIBLE 句   SYS.SYSCOLUMNS ビューと SYS.SYSINDEXES ビューを作成しません。デフォルトでは、これらのビューは Watcom SQL で使用可能なシステム・テーブルとの互換性を保つために作成されます (このソフトウェアのバージョン 4 以前)。これらのビューは、Sybase Adaptive Server Enterprise の互換ビュー dbo.syscolumns と dbo.sysindexes と競合します。

  • BLANK PADDING 句   SQL Anywhere は、文字列について、可変長であり VARCHAR ドメインを使用して格納されている文字列と同じ扱いで、すべての文字列を比較します。これには、固定長の CHAR カラムまたは NCHAR カラムの文字列比較も含まれます。また、値がデータベースに格納されている場合、SQL Anywhere は後続ブランクのトリムや埋め込みは行いません。

    デフォルトでは、SQL Anywhere はブランクを意味のある文字として扱います。たとえば、値 'a ' (文字 'a' と、後続の 1 つのブランク) は、単一文字の文字列 'a' とは等しくありません。不等号比較の照合でも、ブランクは、他の文字と同じように扱われます。

    ブランク埋め込みが有効である場合 (BLANK PADDING ON を指定)、文字列比較のセマンティックは ANSI/ISO SQL 標準とさらに近づきます。ブランク埋め込みが有効であると、SQL Anywhere はどのような比較であっても後続ブランクを無視します。

    上に挙げた例では、ブランクを埋め込まれたデータベースで 'a ' を 'a' に対して等号比較すると、TRUE が返されます。ブランクを埋め込まれたデータベースでは、固定長文字列の値は、アプリケーションによってフェッチされたときにブランクで埋め込まれます。このような文字の割り当てが行われたときにアプリケーションが文字列のトランケーション警告を受け取るかどうかは、ansi_blanks 接続オプションによって制御されます。ansi_blanks オプション [互換性]を参照してください。

  • CASE 句   この句は、データベースでの大文字と小文字の区別を指定するときに使用します。この句のサポートは廃止されました。大文字と小文字の区別を指定するには、COLLATION 句と NCHAR COLLATION 句に提供されている照合の適合化オプションを使用してください。

    CASE RESPECT 文を使用すると、すべての CHAR データ型と NCHAR データ型を比較するときに大文字と小文字が区別されます。UCA を使用した比較では、元の文字とアクセント記号がすべて同じ場合にのみ、大文字と小文字の違いが考慮されます。その他の照合の場合、大文字と小文字が区別されます。たとえば、a は A よりも小さく、A は b よりも小さいというように扱われます。CASE IGNORE 句を使用すると、大文字と小文字を区別せずに文字列が比較されます。大文字と小文字は同一と見なされます。

    データベースの作成時に大文字と小文字の区別が指定されていない場合、比較とソートでの大文字と小文字の区別は、デフォルトでは区別しないになります。ただし、UCA 照合を使用して作成された日本語のデータベースは例外であり、デフォルトの大文字と小文字の区別は区別するになります。

    CASE RESPECT は、ISO/ANSI SQL 標準との互換性を保つために用意されています。大文字と小文字を区別するデータベースであっても、データベースの識別子については大文字と小文字は常に区別されません。

    文字セットの詳細については、国際言語と文字セットを参照してください。

  • CHECKSUM 句   チェックサムは、データベース・ページがディスク上で変更されたかどうかを判断するために使用します。チェックサムを有効にしてデータベースを作成した場合、チェックサムはページがディスクに書き込まれる直前に計算されます。そのページが次にディスクから読み出されるときに、ページのチェックサムが再計算されて、ページに保存されているチェックサムと比較されます。チェックサムが異なる場合は、ディスク上でページが変更されており、エラーが発生します。チェックサムを有効にして作成されたデータベースも、チェックサムを使用して検証されます。次の文を実行することによって、データベースがチェックサムを有効にして作成されたかどうかをチェックできます。
    SELECT DB_PROPERTY ( 'Checksum' );

    チェックサムがオンの場合、このクエリは ON を返します。それ以外の場合は OFF を返します。デフォルトでチェックサムはオフです。そのため、CHECKSUM 句を省略すると OFF が適用されます。

    リムーバブル・ドライブなどのストレージ・デバイス上で実行されているデータベースや Windows Mobile 上で実行されているデータベースでは、データベース・ファイルの破損を速やかに検出できるように、この句の設定に関係なく、データベース・サーバによって常にチェックサムが有効にされます。また、検証アクティビティの実行時に重要なページのチェックサムも計算されます。チェックサムを使用した破損の検出検証ユーティリティ (dbvalid)sa_validate システム・プロシージャ、またはVALIDATE 文を参照してください。

  • COLLATION 句   COLLATION で指定した照合は、文字データ型 (CHAR、VARCHAR、LONG VARCHAR) のソートと比較に使用されます。照合は、使用されるエンコード (文字セット) に文字の比較と順序付けに関する情報をもたらすものです。COLLATION 句が指定されていない場合、SQL Anywhere はオペレーティング・システムの言語とエンコードに基づいて照合を選択します。

    照合は、SQL Anywhere Collation Algorithm を使用する照合リストから選択するか、Unicode Collation Algorithm (UCA) にすることができます。UCA を指定する場合、ENCODING 句も指定してください。

    照合は慎重に選択してください。データベースの作成後に照合は変更できません。照合の選択を参照してください。

    サポートされる照合のリストについては、推奨文字セットと照合サポートされている照合と代替照合を参照してください。

    オプションで、文字列のソートや比較を詳細に制御することを目的に、照合の適合化オプション (collation-tailoring-string) を指定できます。これらのオプションは、キーワード=値 の形式で、カッコで囲んで指定して、その後ろに照合名を記述します。たとえば、... CHAR COLLATION 'UCA(locale=es;case=respect;accent=respect)' のように記述します。

  • DATABASE SIZE 句   データベースが使用する領域の事前割り付けを行うと、データベースがあるドライブの空き領域が不足する危険性を小さくすることができます。また、データベース・サイズを拡大する操作は時間を要するため、それが必要となる前にデータベースに保存できるデータの量を増やすことがパフォーマンスの向上につながります。単位をキロバイト、メガバイト、ギガバイト、またはページで指定するには、それぞれ KB、MB、GB、または PAGES を使用します。

  • DBA USER 句   この句は、データベースの DBA ユーザを指定するときに使用します。この句を使用すると、デフォルトの DBA ユーザ権限ではデータベースに接続できなくなります。この句を指定しない場合、デフォルトの DBA ユーザ ID が作成されます。

  • DBA PASSWORD 句   DBA データベース・ユーザに別のパスワードを指定することができます。この句を指定しない場合は、デフォルトのパスワード (sql) が DBA ユーザに使用されます。

  • ENCODING 句   COLLATION 句で指定するほとんどの照合には、エンコード (文字セット) と順序付けの両方が定義されています。そのような照合については、ENCODING 句を指定する必要はありません。ただし、COLLATION 句に指定されている値が UCA (Unicode Collation Algorithm) の場合、ENCODING を使用してロケール固有のエンコードを指定し、比較と順序指定に UCA を活用できます。ENCODING 句では、CHAR データ型に UTF-8 または任意のシングルバイト・エンコードを指定できます。ENCODING は、UTF-8 以外のマルチバイト・エンコードを指定できません。

    UCA 照合を選択した場合は、オプションで照合の適合化オプションを指定できます。照合の適合化オプションを参照してください。

    COLLATION が UCA に設定され、ENCODING が指定されていない場合、SQL Anywhere では UTF-8 が使用されます。推奨されるエンコードと照合の詳細については、推奨文字セットと照合を参照してください。

    SQL Anywhere でサポートされるエンコードのリストを取得する方法については、サポートされている文字セットを参照してください。

  • ENCRYPTED 句または ENCRYPTED TABLE 句   暗号化すると、格納データを読み取ることができなくなります。データベース全体を暗号化するには、ENCRYPTED キーワード (TABLE なし) を使用します。テーブルの暗号化を有効にするときは、ENCRYPTED TABLE 句を使用します。「テーブルの暗号化を有効にする」とは、以降にキーワード ENCRYPTED 句を使用して作成されるテーブルや変更されるテーブルは、データベースの作成時に指定した設定を使用して暗号化されるということです。テーブル暗号化を参照してください。

    データベースとテーブルの暗号化には単純と強力という 2 つのレベルがあります。単純暗号化は、難読化と同じです。データは判読できませんが、暗号に関する知識を持ったユーザはデータを解読できます。強力な暗号化を使用すると、データは判読不能になり、事実上は解読できません。

    単純暗号化の場合は、ENCRYPTED ON ALGORITHM SIMPLE または ENCRYPTED ALGORITHM SIMPLE を指定するか、アルゴリズムやキーを指定せずに ENCRYPTED ON 句を指定します。

    強力な暗号化では、128 ビットまたは 256 ビットの AES アルゴリズムを使用する ENCRYPTED ON ALGORITHM と KEY 句を指定して暗号化キーを指定します。キーには最低でも 16 文字の値を選択し、大文字と小文字、数字、文字、特殊文字を組み合わせて使用することをおすすめします。

    Windows Mobile では、ARM プロセッサ用に AES_FIPS および AES256_FIPS アルゴリズムのみがサポートされています。

    警告

    強力な暗号化が適用されたデータベースの場合、キーのコピーは必ず安全な場所に保管してください。暗号化キーがわからなくなった場合は、Sybase 製品の保守契約を結んでいるサポート・センタに依頼してもデータにはアクセスできません。アクセスできなくなったデータベースは、廃棄して、新しくデータベースを作成する必要があります。

    強力なデータベース暗号化の詳細については、強力な暗号化を参照してください。

    既存のデータベースの暗号化されたコピーは、CREATE ENCRYPTED DATABASE 文を使用して作成することもできます。CREATE ENCRYPTED DATABASE 文を参照してください。

  • JCONNECT 句   jConnect JDBC ドライバからシステム・カタログ情報にアクセスできるようにするには、JCONNECT ON を指定します。jConnect をサポートするシステム・オブジェクトがインストールされます。jConnect システム・オブジェクトを含まない場合、JCONNECT OFF を指定します。その場合でも、システム情報にアクセスしないかぎり、JDBC を使用できます。JCONNECT はデフォルトで ON です。

    Windows Mobile で使用するデータベースを作成する場合は、Windows Mobile での jConnect の使用を参照してください。

  • NCHAR COLLATION 句   NCHAR COLLATION 句で指定した照合は、各国の文字データ型 (NCHAR、NVARCHAR、LONG NVARCHAR) のソートと比較に使用されます。照合は、各国の文字に使用される UTF-8 エンコード (文字セット) に文字の順序付けに関する情報をもたらすものです。NCHAR COLLATION 句が指定されない場合、SQL Anywhere は Unicode Collation Algorithm (UCA) を使用します。その他に使用できる照合は UTF8BIN のみです。UTF8BIN は、エンコードが 0x7E を超えるすべての文字のバイナリ順を規定します。照合の選択を参照してください。

    オプションで、文字列のソートや比較を詳細に制御することを目的に、照合の適合化オプション (collation-tailoring-string) を指定できます。これらのオプションは、キーワード=値 の形式で、引用符で囲んで指定して、その後ろに照合名を記述します。たとえば、... NCHAR COLLATION 'UCA(locale=es;case=respect;accent=respect)' のように記述します。ACCENT 句または CASE 句と、大文字小文字やアクセント記号の区別の設定を含む照合の適合化文字列とを、併せて指定すると、ACCENT 句と CASE 句の値はデフォルトとしてのみ使用されます。

    サポートされる照合の適合化オプションのリストについては、照合の適合化オプションを参照してください。

    注意

    UCA 照合を指定すると、照合の適合化のすべてのオプションがサポートされます。その他の照合の場合、大文字小文字の区別の適合化オプションのみがサポートされます。

    注意

    照合の適合化オプションを使用して作成したデータベースは、10.0.1 より前のデータベース・サーバでは起動できません。

  • PAGE SIZE 句   データベースのページ・サイズは、2048、4096、8192、16384、または 32768 バイトです。デフォルトのページ・サイズは 4096 バイトです。ページ・サイズを大きくすると、一般に大規模なデータベースのパフォーマンスは向上しますが、オーバヘッドは増大します。

    次に例を示します。

    CREATE DATABASE 'c:\\databases\\my_db.db'
    PAGE SIZE 4096;
    ページ・サイズ制限

    現在のサーバで使用しているページ・サイズより大きいページ・サイズは指定できません。サーバ・ページ・サイズは、最初に起動されたデータベースのセットから取得されるか、サーバ・コマンド・ラインで -gp オプションを使用して設定します。-gp サーバ・オプションを参照してください。

  • TRANSACTION LOG 句   トランザクション・ログは、データベース・サーバがデータベースに対するすべての変更を記録するファイルです。トランザクション・ログはバックアップとリカバリ、データ・レプリケーションで重要な役割を果たします。

    TRANSACTION 句の MIRROR 句を使用すると、トランザクション・ログのミラーを使用する場合にファイル名を指定できます。トランザクション・ログ・ミラーはトランザクション・ログと同一のコピーで、通常は別のデバイスで管理され、データを確実に保護しています。デフォルトでは、SQL Anywhere はトランザクション・ログ・ミラーを使用しません。

備考

指定された名前と属性でデータベース・ファイルを作成します。この文は、プロシージャ、トリガ、イベント、またはバッチではサポートされていません。

パーミッション

この文を実行するのに必要なパーミッションは、サーバ・コマンド・ラインで -gu オプションを使用して設定します。デフォルトの設定では、DBA 権限を必要とします。

データベース・サーバを実行中のアカウントには、ファイルが作成されたディレクトリの書き込みパーミッションが必要です。

関連する動作

オペレーティング・システム・ファイルが作成されます。

参照
標準と互換性
  • SQL/2003   ベンダ拡張。

次の文は、C:\ ディレクトリにデータベース・ファイル mydb.db を作成します。

CREATE DATABASE 'C:\\mydb.db'
TRANSACTION LOG ON
CASE IGNORE
PAGE SIZE 4096
ENCRYPTED OFF
BLANK PADDING OFF;

次の文は、コード・ページ 1252 を使用してデータベースを作成し、CHAR と NCHAR のデータ型の両方に UCA を使用します。比較とソート時に、アクセント記号と大文字と小文字の区別が考慮されます。

CREATE DATABASE 'c:\\uca.db'
COLLATION 'UCA'
ENCODING 'CP1252'
NCHAR COLLATION 'UCA'
ACCENT RESPECT
CASE RESPECT;

次の文はデータベース myencrypteddb.db を作成します。また、単純暗号化によって暗号化されます。

CREATE DATABASE 'myencrypteddb.db' 
ENCRYPTED ON;

次の文はデータベース mystrongencryptdb.db を作成します。また、キー gh67AB2 を使用して暗号化されます (強力な暗号化)。

CREATE DATABASE 'mystrongencryptdb.db' 
ENCRYPTED ON KEY 'gh67AB2';

次の文はデータベース mytableencryptdb.db を作成します。また、単純暗号化を使用してテーブルの暗号化が有効にされます。ENCRYPTED の後にキーワード TABLE を挿入した場合、データベースの暗号化ではなくテーブルの暗号化を示すことに注意してください。

CREATE DATABASE 'mytableencryptdb.db' 
ENCRYPTED TABLE ON;

次の文はデータベース mystrongencrypttabledb.db を作成します。また、キー gh67AB2 (強力な暗号化) と AES_FIPS 暗号化アルゴリズムを使用してテーブルの暗号化が有効にされます。

CREATE DATABASE 'mystrongencrypttabledb.db' 
ENCRYPTED TABLE ON KEY 'gh67AB2' 
ALGORITHM 'AES_FIPS';

次の文は、照合 1252LATIN1 を使用するデータベース・ファイル mydb.db を作成します。NCHAR 照合を UCA に設定し、ロケール・セットを es に設定して、大文字と小文字の区別とアクセント記号の区別を有効にします。

CREATE DATABASE 'my2.db' 
      COLLATION '1252LATIN1(case=respect)' 
      NCHAR COLLATION 'UCA(locale=es;case=respect;accent=respect)';