機能
記述形式
参照項番
データ型 → “2.2 データ型”
定数 → “2.1.2 定数”
日本語文字列 → “2.1.3 トークン”
権限
表を定義できるのは、スキーマの定義者とCREATE権を付与された人のみです。
格納領域指定を行った場合は、データベーススペースに対するALLOCATE権が必要です。
DEFAULT句に順序を指定する場合は、順序に対するSELECT権が必要です。
一般規則
一時表を作成する場合に指定します。このとき、行削除指定で一時表内の行の削除時期および格納領域指定で一時表を作成するデータベーススペースまたはデフォルトデータベーススペース(DEAFAULT DBSPACE)を指定します。
なお、一時表には、SEQUENTIAL構造の格納構造(DSO、DSI)が自動的に作成されるため、格納構造を定義する必要はありません。また、作成される格納構造のDSO名、DSI名は“_TEMP”で始まる名前となります。
列定義に指定する一意性指定は、その一意性指定を指定した一意性制約定義の一意列リストに該当列を1つだけ指定した、表制約定義と同じです。
表に対して格納構造定義で分割格納をする場合、表に定義する一意性制約定義に分割キーを構成する列をすべて含むように指定することが必要です。また、列定義に一意性指定が指定できるのは分割キーの列と同じ列だけです。列定義に一意性指定を指定した場合、分割キーを構成する列の数は1つになります。
列定義に行識別子“ROW_ID”は指定できません。
格納構造がSEQUENTIALの表に、BLOB型の列を含む場合は、以下のようになります。
BLOB型の列のサイズは、1キロバイトから最大2ギガバイトです。BLOB型以外の列の合計は最大32000バイトです。
格納構造がOBJECTの表で、データ型にBLOB型を指定した場合は、以下のようになります。
BLOB型の列以外の列は固定長属性であることが必要です。
BLOB型の列はNOT NULL制約を指定することが必要です。
BLOB型の列は表の最後の列として指定することが必要です。
BLOB型で指定するサイズの単位は、G(ギガバイト)、M(メガバイト)およびK(キロバイト)です。
BLOB型の列以外の列の合計は最大32000バイトです。
DEFAULT句は、列の値に対する省略値を指定します。ここで指定する省略値を既定値オプションと呼びます。すなわち、表に行が挿入されるとき、該当列の値が指定されない場合に、列に設定する値を指定します。DEFAULT句に指定可能な値と、列に設定される値を以下に示します。
なお、表中のLは定義する長さを、Mは設定する定数の長さを表します。
DEFAULT句の指定 | 列定義のデータ型 | 挿入時に値が指定されない列に設定される値 |
---|---|---|
なし | すべてのデータ型 | NULL値 |
NULL | すべてのデータ型 | NULL値 |
真数定数 | 真数型、概数型 | 定数の値 |
概数定数 | 真数型、概数型 | 定数の値 |
文字列定数(長さM) | 文字列型(長さL=M) | 定数の値 |
文字列型(長さL>M) | データ型が固定長の場合は定数の右に空白を詰めた値。可変長の場合は定数の値。 | |
各国語文字列定数 | 各国語文字列型(長さL=M) | 定数の値 |
各国語文字列型(長さL>M) | データ型が固定長の場合は定数の右に空白を詰めた値。可変長の場合は定数の値。 | |
日付定数 | DATE型 | 定数の値 |
時刻定数 | TIME型 | 定数の値 |
時刻印定数 | TIMESTAMP型 | 定数の値 |
時間隔定数 | INTERVAL型(年月) | 定数の値 |
INTERVAL型(日時) | 定数の値 | |
USER | 文字列型(長さL>=18) (注) | 表に行を挿入するアプリケーションのCONNECT文で指定したログイン名 |
日時値関数 | DATE型 | 挿入時の日付 |
日時値関数 | TIME型 | 挿入時の時刻 |
日時値関数 | TIMESTAMP型 | 挿入時の時刻印 |
NEXTVAL | 真数型、概数型 | 順序番号 |
注) データベースの文字コード系がUNICODEの場合、長さはL>=128です。
一意性制約定義は、列または列の並びに、重複する行が発生しないことを指定します。このとき、対象となる列にはすべてNOT NULLが指定されていることが必要です。
一意性制約定義のうちPRIMARY KEYは、表の中で主キーとなる列または列の並びを指定します。PRIMARY KEYは、表定義中で1回だけ指定することができます。
一意性制約定義に指定できる列名の数は、最大64個です。
一意性制約された列名に対するデータ型で指定できる長さの合計は、最大1000バイトです。
一意性制約定義に指定した列または列の並びは、格納構造定義でインデックスの構成列とするか、あるいはクラスタキーとして定義することが必要です。このために、一意性制約にデータ型が概数型またはBLOB型の列を指定することはできません。
ただし、データベース簡単運用の場合は、一意性制約定義に指定した列または列の並びに対応したインデックスをシステムが自動的に定義するため、インデックスを定義する必要はありません。なお、インデックス名は“@”、システムで採番する10桁の数字と“_PK”(PRIMARY KEYの場合)または“_UK”(UNIQUEの場合)を使用して命名します。
表に対して格納構造定義で分割格納をする場合、表に定義する一意性制約定義に分割キーを構成する列をすべて含むように指定することが必要です。また、列定義に一意性指定が指定できるのは分割キーの列と同じ列だけです。
表に対して格納構造定義で分割をする場合、一意性制約は分割キーの指定を考慮してこれらの規則を満たすように指定してください。特に列定義に一意性制約を指定する場合は、分割キーとして、その列以外を指定できなくなるので注意してください。
一時表内の行の削除時期を指定します。DELETE ROWSを指定するか、または本指定を省略した場合は、一時表はトランザクション内で利用できる表となり、トランザクション終了時に削除されます。PRESERVE ROWSを指定した場合は、一時表はセション内で利用できる表となり、セション終了時に削除されます。
格納領域指定は、表のデータの格納先のデータベーススペースまたはデフォルトデータベーススペース(DEAFAULT DBSPACE)を指定します。
指定されたデータベーススペースにSymfoware/RDBが表の格納構造を定義します。なお、指定されたデータベーススペースは、定義済みであることが必要です。
定義される格納構造については、“D.3 格納領域指定時の格納構造”を参照してください。
1つの実表を複数のデータベーススペースに分割して格納するような場合には、格納領域指定を行うことができません。このような場合には、格納構造定義文でデータベーススペースを定義します。
格納領域指定を指定する場合、システム用の動作環境ファイルでDEFAULT_DSI_NAME=CODEを指定した場合は、表名およびスキーマ名に、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。CODEを指定しない場合は、8文字以内で定義します。
格納領域指定を指定する場合、デフォルトデータベーススペースに表を作成する場合または一時表を作成する場合の表名は、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。
デフォルトデータベーススペースに実表を定義する場合は、格納領域指定は指定できません。
使用例
スキーマS1に実表“会社表”を定義します。
CREATE TABLE S1.会社表 (会社番号 SMALLINT NOT NULL PRIMARY KEY, 会社名 NATIONAL CHARACTER(10) NOT NULL, 電話番号 CHARACTER(14), 住所 NATIONAL CHARACTER(20))
スキーマS1に実表“発注表”を定義します。なお、取引先、取引製品の並びを主キーとします。また、発注数量の省略値を10とします。
CREATE TABLE S1.発注表 (取引先 SMALLINT NOT NULL, 取引製品 SMALLINT NOT NULL, 仕入価格 INTEGER, 発注数量 SMALLINT DEFAULT 10, PRIMARY KEY(取引先,取引製品))
スキーマS1に実表“製品写真表”を定義します。
CREATE TABLE S1.製品写真表 (製品番号 SMALLINT NOT NULL PRIMARY KEY, 商品写真 BLOB(2G) NOT NULL)
スキーマS1に一時表“一時在庫表”を定義します。一時在庫表の利用者数を10とします。
CREATE GLOBAL TEMPORARY TABLE S1.一時在庫表 (製品番号 SMALLINT NOT NULL, 製品名 NATIONAL CHARACTER(10) NOT NULL, 在庫数量 INTEGER, 倉庫番号 SMALLINT, PRIMARY KEY(製品番号)) ON DBSPACE1 10