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

SQL Anywhere 11.0.1 (日本語) » Ultra Light データベース管理とリファレンス » Ultra Light SQL リファレンス » Ultra Light SQL 文

 

Ultra Light CREATE TABLE 文

この文は、テーブルを作成するために使用します。

構文
CREATE TABLE table-name (
 { column-definition | table-constraint }, ... 
)
column-definition :
column-name  data-type    
[ [ NOT ] NULL ] 
[ DEFAULT column-default ] 
[ column-constraint ]
column-default :
GLOBAL AUTOINCREMENT [ ( number ) ] 
| AUTOINCREMENT 
| CURRENT DATE 
| CURRENT TIME 
| CURRENT TIMESTAMP
| NULL 
| NEWID( )
| constant-value
column-constraint :
PRIMARY KEY
| UNIQUE
table-constraint :
{ [ CONSTRAINT constraint-name ] 
   pkey-constraint 
   | fkey-constraint 
   | unique-key-constraint } 
[ WITH MAX HASH SIZE integer ]
pkey-constraint : 
PRIMARY KEY [ ordered-column-list ]
fkey-constraint : 
[ NOT NULL ] FOREIGN KEY [ role-name ] ( ordered-column-list )
   REFERENCES table-name ( column-name, ... ) 
   [ CHECK ON COMMIT ] 
unique-key-constraint :
UNIQUE ( ordered-column-list )
 ordered-column-list :
( column-name [ ASC | DESC ], ... )
パラメータ

column-definition   テーブル内のカラムを定義します。この句には、次のパラメータを使用できます。

  • column-name   カラム名は識別子です。同じテーブル内の 2 つのカラムが同じ名前を持つことはできません。Ultra Light の識別子を参照してください。

  • data-type   カラムのデータ型です。Ultra Light のデータ型を参照してください。

  • [NOT] NULL   NOT NULL が指定されているか、カラムが PRIMARY KEY または UNIQUE 制約下にある場合、カラムはいずれのローでも NULL を持つことはできません。それ以外の場合は、NULL は許可されます。

  • column-default   カラムのデフォルト値を設定します。DEFAULT 値を指定する場合、カラムの値を指定しない INSERT 文のカラムの値としてこのデフォルト値が使用されます。INSERT 文はカラムの値を指定しません。DEFAULT を指定しない場合、DEFAULT NULL と等しくなります。デフォルトのオプションを以下に示します。

    • AUTOINCREMENT   AUTOINCREMENT を使用する場合、カラムは整数データ型の 1 つ、または真数値型にします。テーブルに挿入する場合、AUTOINCREMENT カラムの値を指定しないと、カラム内の任意の値より大きいユニーク値が生成されます。INSERT で、カラムの現在の最大値より大きい値を指定した場合、この値が後続の挿入処理の開始ポイントとして使用されます。

      ヒント

      Ultra Light では、テーブルが作成された時点でのオートインクリメントの初期値は 0 ではありません。カラムに符号付きデータ型が指定されている場合は、オートインクリメントによって負の値が生成されます。このため、オートインクリメントを適用するカラムを符号なし整数として宣言し、負の値が生成されないようにしてください。

    • GLOBAL AUTOINCREMENT   ドメインが分割されるという点を除いて、AUTOINCREMENT と同じです。各分割には同じ数の値が含まれます。データベースの各コピーにユニークなグローバル・データベース ID 番号を割り当てます。Ultra Light では、データベースのデフォルト値は、そのデータベース番号でユニークに識別された分割からのみ設定されます。Ultra Light での GLOBAL AUTOINCREMENT の使用Ultra Light global_database_id オプションを参照してください。

    • [NOT] NULL   カラムに NULL を格納できるかどうかを制御します。

    • NEWID()   ユニークな識別子の値を生成する関数です。NEWID 関数 [その他]を参照してください。

    • CURRENT TIMESTAMP   CURRENT DATE と CURRENT TIME を結合して、TIMESTAMP 値を形成します。年、月、日、時、分、秒、秒の小数位で構成されます。秒は小数第 3 位まで格納されます。精度はシステム・クロックの精度によって制限されます。CURRENT TIMESTAMP 特別値を参照してください。

    • CURRENT DATE   現在の年、月、日を格納します。CURRENT DATE 特別値を参照してください。

    • CURRENT TIME   現在の時、分、秒 (小数位あり) で構成される時刻を格納します。CURRENT TIME 特別値を参照してください。

    • constant-value   カラムのデータ型の定数です。通常、この定数は数値または文字列です。

  • column-constraint 句   カラム制約を指定して、カラムに許容される値を制限します。カラム制約は次のいずれかです。

    • PRIMARY KEY   column-constraint の一部として設定するときに、PRIMARY KEY 句はテーブルのプライマリ・キーとしてカラムを設定します。プライマリ・キーは、テーブル内の各ローをユニークに識別します。デフォルトでは、プライマリ・キーに含まれるカラムには NULL を使用できません。

    • UNIQUE   テーブル内の各ローをユニークに識別する 1 つまたは複数のカラムを識別します。テーブル内の異なるローが、指定されているすべてのカラムで同じ値を持つことはできません。1 つのテーブルに複数の一意性制約が存在することがあります。NULL 値は使用できません。

table-constraint 句   テーブル制約を指定して、テーブル内の 1 つまたは複数のカラムに格納できる値を制限します。CONSTRAINT 句を使用して、テーブル制約の識別子を指定します。以下に定義するように、テーブル制約は、プライマリ・キー制約、外部キー制約、一意性制約のいずれかの形式にできます。

  • pkey-constraint 句   テーブルのプライマリ・キーとして、指定したカラムを設定します。プライマリ・キーは、テーブル内の各ローをユニークに識別します。プライマリ・キーに含まれるカラムには NULL を使用できません。

  • fkey-constraint 句   外部キー制約を指定して、1 つまたは複数のカラムの値を、別のテーブルのプライマリ・キー (または一意性制約) の値と一致するように制限します。

    • NOT NULL 句   NOT NULL を指定して、外部キー・カラムを NULL 入力不可にします。外部キー内の NULL は、外部テーブルのこのローに該当するローがプライマリ・テーブル内にないことを意味します。複数カラムの外部キー内の少なくとも 1 つの値が NULL である場合、キーの他のカラムに保持できる値に関する制限はありません。

    • role-name 句   role-name を指定して、外部キーに名前を付けます。role-name は、同じテーブル内で外部キーを区別する場合に使用します。また、CONSTRAINT constraint-name を使用して外部キーに名前を付けることができます。ただし、両方のメソッドを使用して外部キーに名前を付けないでください。

    • REFERENCES 句   REFERENCES 句を指定し、プライマリ・テーブルで、外部キー制約として使用する 1 つまたは複数のカラムを定義します。REFERENCES カラム制約に column-name を指定する場合、一意性制約またはプライマリ・キーの制約を受ける、プライマリ・テーブルのカラム名を指定します。

    • CHECK ON COMMIT   データベース・サーバで、COMMIT を待ってから外部キー制約を実行するように、CHECK ON COMMIT を指定します。デフォルトでは、挿入、更新、削除の各操作中に、外部キー制約がただちに実行されます。ただし、CHECK ON COMMIT を設定すると、データベースの変更が外部キー制約に違反している場合でも、次の COMMIT 前にデータの不整合が解決されればデータベースの変更を任意の順序で実行できます。

  • unique-key-constraint 句   一意性制約を指定して、テーブル内の各ローをユニークに識別する 1 つ以上のカラムを指定します。テーブル内の異なるローが、指定されているすべてのカラムで同じ値を持つことはできません。1 つのテーブルに複数の一意性制約が存在することがあります。

  • WITH MAX HASH SIZE   このインデックスのハッシュ・サイズをバイト単位で設定します。この値は、データベースに対して有効なデフォルトの MaxHashSize プロパティを上書きします。デフォルトのサイズの詳細については、Ultra Light データベース・プロパティへのアクセスを参照してください。

備考

通常、カラム制約を使うのは、制約がテーブル内で複数の他カラムを参照しない場合です。複数のカラムを参照する場合は、テーブル制約を使用します。この文によって制約違反が発生した場合、文の実行は完了しません。エラーの検出前に文が行った変更が完了していない場合は、エラーがレポートされます。

テーブル内の各ローは、ユニークなプライマリ・キー値を持ちます。

役割名を指定しない場合、役割名は以下のように設定されます。

  1. テーブル名と同じ役割名を含む外部キーが存在しない場合、テーブル名が役割名として割り当てられます。

  2. テーブル名がすでに使用されている場合、役割名は、0 が埋め込まれた、テーブルに固有の 3 桁の数字と結合されたテーブル名になります。

スキーマの変更   スキーマの変更が同時に開始された場合、文は解放されません。DDL 文を使用したスキーマ変更を参照してください。

CREATE TABLE 文の処理中は、そのテーブルを参照する要求やクエリは処理されません。また、データベースにアクティブなクエリやコミットされていないトランザクションがある場合は CREATE TABLE を実行できません。

Ultra Light.NET ユーザの場合、すべてのデータ・オブジェクト (たとえば ULDataReader) に対して Dispose メソッドも呼び出さないと、この文を実行できません。Dispose メソッドを参照してください。

関連する動作

オートコミット。

参照

次の文は、図書データベース用にテーブルを作成し、図書情報を保持します。

CREATE TABLE library_books (
   isbn CHAR(20)      PRIMARY KEY,
   copyright_date     DATE,
   title              CHAR(100),
   author             CHAR(50),
   location           CHAR(50),
   FOREIGN KEY location REFERENCES room
);

次の文では、図書データベース用にテーブルを作成して、貸し出し図書の情報を保持します。date_borrowed のデフォルト値は、エントリが作成される日に本が貸し出されることを示します。date_returned カラムは、本が返却されるまでは NULL です。

CREATE TABLE borrowed_book (
   loaner_name   CHAR(100) PRIMARY KEY,
   date_borrowed DATE NOT NULL DEFAULT CURRENT DATE,
   date_returned DATE,
   book CHAR(20)
   FOREIGN KEY book REFERENCES library_books (isbn)
);

次の文は、販売データベース用にテーブルを作成し、注文と注文項目情報を保持します。

CREATE TABLE Orders (
   order_num INTEGER NOT NULL PRIMARY KEY,
   date_ordered DATE,
   name CHAR(80)
);
CREATE TABLE Order_item (
   order_num        INTEGER NOT NULL,
   item_num         SMALLINT NOT NULL,
   PRIMARY KEY (order_num, item_num),
   FOREIGN KEY (order_num)
   REFERENCES Orders (order_num)
);