データベースを作成します。
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 : 引用符付き文字列
CREATE DATABASE ファイル名 (db-filename-string、log-filename-string、mirror-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 照合アルゴリズム) を使用する場合にのみ適用されます。ACCENT RESPECT 句を使用すると、文字のアクセント記号を考慮して UCA 文字列が比較されます。たとえば、e は é よりも小さいと扱われます。ACCENT FRENCH は ACCENT RESPECT と似ていますが、フランス語の規則に合わせてアクセント記号が右から左の方向で比較される点が異なります。ACCENT IGNORE 句を使用すると、アクセント記号を無視して文字列が比較されます。たとえば、e と é は同等です。
データベースの作成時にアクセント記号の区別が指定されていない場合、比較とソートでのアクセント記号の区別は、デフォルトでは区別しないになります。ただし、UCA 照合を使用して作成された日本語のデータベースは例外であり、デフォルトのアクセント記号の区別は区別するになります。
ASE COMPATIBLE 句 SYS.SYSCOLUMNS ビューと SYS.SYSINDEXES ビューを作成しません。デフォルトでは、これらのビューは Watcom SQL で使用可能なシステムテーブルとの互換性を保つために作成されます (このソフトウェアのバージョン 4 以前)。これらのビューは、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 接続オプションによって制御されます。
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 句を省略すると ON が適用されます。
リムーバブルドライブなどのストレージデバイス上で実行されているデータベースや Windows Mobile 上で実行されているデータベースでは、データベースファイルの破損を速やかに検出できるように、この句の設定に関係なく、データベースサーバーによって常に書き込みチェックサムが有効になります。また、検証アクティビティの実行時に重要なページのチェックサムも計算されます。
グローバルチェックサムが有効になっていないデータベースでは、-wc オプションを使用して書き込みチェックサムを有効にすることができます。
COLLATION 句 COLLATION で指定した照合は、文字データ型 (CHAR、VARCHAR、LONG VARCHAR) のソートと比較に使用されます。照合は、使用されるエンコード (文字セット) に文字の比較と順序付けに関する情報をもたらすものです。COLLATION 句が指定されていない場合、SQL Anywhere はオペレーティングシステムの言語とエンコードに基づいて照合を選択します。
照合は、SQL Anywhere Collation Algorithm (SACA) を使用する照合リストから選択するか、Unicode 照合アルゴリズム (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 ユーザーに使用されます。
ユーザー ID には、次に該当する値を指定できません。
パスワードは大文字と小文字が区別され、次に該当する値は指定できません。
ENCODING 句 COLLATION 句で指定するほとんどの照合には、エンコード (文字セット) と順序付けの両方が定義されています。そのような照合については、ENCODING 句を指定する必要はありません。ただし、COLLATION 句に指定されている値が UCA (Unicode 照合アルゴリズム) の場合、ENCODING を使用してロケール固有のエンコードを指定し、比較と順序指定に UCA を活用できます。ENCODING 句では、CHAR データ型に UTF-8 または任意のシングルバイトエンコードを指定できます。ENCODING は、UTF-8 以外のマルチバイトエンコードを指定できません。
UCA 照合を選択した場合は、オプションで照合の適合化オプションを指定できます。
COLLATION が UCA に設定され、ENCODING が指定されていない場合、SQL Anywhere では UTF-8 が使用されます。
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 文を使用して作成することもできます。
JCONNECT 句 jConnect JDBC ドライバーからシステムカタログ情報にアクセスできるようにするには、JCONNECT ON を指定します。この句によって jConnect をサポートするシステムオブジェクトがインストールされます。jConnect システムオブジェクトを含まない場合、JCONNECT OFF を指定します。その場合でも、システム情報にアクセスしないかぎり、JDBC を使用できます。JCONNECT はデフォルトで ON です。
PAGE SIZE 句 データベースのページサイズは、2048、4096、8192、16384、または 32768 バイトです。デフォルトのページサイズは 4096 バイトです。ページサイズを大きくすると、一般に大規模なデータベースのパフォーマンスは向上しますが、オーバーヘッドは増大します。
次に例を示します。
CREATE DATABASE 'c:\\databases\\my_db.db' PAGE SIZE 4096; |
現在のサーバーで使用しているページサイズより大きいページサイズは指定できません。サーバーページサイズは、最初に起動されたデータベースのセットから取得されるか、サーバーコマンドラインで -gp オプションを使用して設定します。
NCHAR COLLATION 句 NCHAR COLLATION 句で指定した照合は、各国の文字データ型 (NCHAR、NVARCHAR、LONG NVARCHAR) のソートと比較に使用されます。照合は、各国の文字に使用される UTF-8 エンコード (文字セット) に文字の順序付けに関する情報をもたらすものです。NCHAR COLLATION 句が指定されない場合、SQL Anywhere は Unicode 照合アルゴリズム (UCA) を使用します。その他に使用できる照合は UTF8BIN のみです。UTF8BIN は、エンコードが 0x7E を超えるすべての文字のバイナリ順を規定します。
オプションで、文字列のソートや比較を詳細に制御することを目的に、照合の適合化オプション (collation-tailoring-string) を指定できます。これらのオプションは、キーワード=値 の形式で、引用符で囲んで指定して、その後ろに照合名を記述します。たとえば、... NCHAR COLLATION 'UCA(locale=es;case=respect;accent=respect)'
のように記述します。ACCENT 句または CASE 句と、大文字小文字やアクセント記号の区別の設定を含む照合の適合化文字列とを、併せて指定すると、ACCENT 句と CASE 句の値はデフォルトとしてのみ使用されます。
UCA 照合を指定すると、照合の適合化のすべてのオプションがサポートされます。その他の照合の場合、大文字小文字の区別の適合化オプションのみがサポートされます。
照合の適合化オプションを使用して作成したデータベースは、10.0.1 より前のデータベースサーバーでは起動できません。
TRANSACTION LOG 句 トランザクションログは、データベースサーバーがデータベースに対するすべての変更を記録するファイルです。トランザクションログはバックアップとリカバリ、データレプリケーションで重要な役割を果たします。
TRANSACTION 句の MIRROR 句を使用すると、トランザクションログのミラーを使用する場合にファイル名を指定できます。トランザクションログミラーはトランザクションログと同一のコピーで、通常は別のデバイスで管理され、データを確実に保護しています。デフォルトでは、SQL Anywhere はトランザクションログミラーを使用しません。
指定された名前と属性でデータベースファイルを作成します。データベースはオペレーティングシステムファイルとして格納されます。この文は、プロシージャー、トリガー、イベント、またはバッチではサポートされていません。
この文を実行するのに必要なパーミッションは、サーバーコマンドラインで -gu オプションを使用して設定します。デフォルトの設定は、DBA 権限を必要とします。
データベースサーバーを実行中のアカウントには、ファイルが作成されたディレクトリの書き込みパーミッションが必要です。
オペレーティングシステムファイルが作成されます。
SQL/2008 ベンダー拡張。
Transact-SQL CREATE DATABASE 文は Adaptive Server Enterprise でサポートされていますが、使用する句は異なります。
次の文は、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)'; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |