CREATE TABLE
構文 構文 構文 構文 図 図 図
図4-25 CREATE TABLEコマンドコマンドコマンドコマンド
column_list::=
図 図 図
図4-26 column_list式式式式
用途 用途 用途 用途
データベース表を作成します。
また、指定された副問合せの結果に基づいてデータベースを作成し移入します。列のデータ 型は、副問合せの結果セットから導出されます。詳細は、「使用上の注意」を参照してくだ さい。
ALTER USER
SQLコマンド 4-45 前提条件
前提条件 前提条件 前提条件
ユーザーのスキーマまたは別のスキーマ内に表を作成するには、データベースにSYSTEM として、またはDBA/DDL権限を持つユーザーとしてログインする必要があります。
表表
表表4-19 CREATE TABLEコマンドで使用される引数コマンドで使用される引数コマンドで使用される引数コマンドで使用される引数
使用上の注意 使用上の注意 使用上の注意 使用上の注意
CREATE ANY TABLEを使用して別のスキーマに表を作成できますが、DBA/DDLロール
が必要です。
各表は、最大1000列を持つことができ、複数の主キー制約を持つことはできません。
次の構文は、Oracle Liteではサポートされていません。
CREATE TABLE <newtablename> AS SELECT * FROM <oldtablename>;
引数 引数 引数
引数 説明説明説明説明
schema 所有者であるユーザーと同じ名前のスキーマ。省略すると、デフォ
ルトのスキーマ名が使用されます。
table データベースの表の名前。表名にはピリオド「.」を含めることはで
きません。また、アンダースコア「_」の付いた文字で始めること もできません。
column 表の列の名前。
datatype columnのデータ型。副問合せでは使用できません。
DEFAULT 新しい列に対してデフォルト値expr(式)を指定するか、既存の列
に対して新規デフォルトexprを指定します。次のいずれかになりま す。
■ DEFAULT NULL
■ DEFAULT USER(表が作成された際のユーザー名)
■ DEFAULT リテラル
式の詳細は、「式の指定」を参照してください。
column_constraint 列整合性制約を追加します。詳細は、「CONSTRAINT句」を参照
してください。
table_constraint 表整合性制約を追加します。詳細は、「CONSTRAINT句」を参照
してください。
AS subquery SELECT文。
ALTER USER
適切なDDLを使用して表を作成する必要があります。その後、次の文を使用して、既存の 表を新しい表にコピーできます。
INSERT INTO <newtablename> SELECT * FROM <oldtablename>;
commit;
column_listが省略された場合は、次のようになります。
■ 副問合せを指定したときに表の列が定義されていない場合、列名はsubqueryにより選択 された式から導出されます。
■ 選択リスト内の式に別名が含まれている場合は、列名として別名が使用されます。
■ 式が別名を持たない列の場合、その名前が列名として使用されます。列ではなく、別名 を持たない式は無効です。表の列のデータ型は、副問合せの選択リスト内の対応する式 のデータ型と同じです。
■ 副問合せがUNIONまたはMINUSを含む場合、最初の選択文がこの目的に使用されま す。
column_listが含まれている場合は、次のようになります。
■ column_list内の列の数は、副問合せの式の数と等しくする必要があります。
■ 列定義は、列名、デフォルト値および整合性制約のみを指定できますが、データ型は指 定できません。
■ 参照整合性制約は、CREATE TABLE文のこの構成では定義できません。かわりに、後
でALTER TABLE文を使用して参照整合性制約を作成できます。
subqueryでORDER BY句が使用された場合、データはその順序で表に挿入されます。これ
は通常、列による順序に従ったデータのクラスタとなりますが、保証はされません。
例 例 例 例1
次の文は、HOTEL_NAMEとCAPACITYの2つの列がある表HOTEL_DIRを作成します。
HOTEL_NAMEは主キーで、CAPACITYはNULLにはできず、デフォルト値が0です。
CREATE TABLE HOTEL_DIR (HOTEL_NAME CHAR(40) PRIMARY KEY, CAPACITY INTEGER DEFAULT 0 NOT NULL)
例 例 例 例2
次の文は、表HOTEL_RESTAURANTを作成します。
CREATE TABLE HOTEL_RESTAURANT(REST_NAME CHAR(50) UNIQUE, HOTEL_NAME CHAR(40) REFERENCES HOTEL_DIR,
RATING FLOAT DEFAULT NULL)
ALTER USER
SQLコマンド 4-47 列には、次のものが含まれます。
■ REST_NAMEはレストランの名前です。
■ HOTEL_NAMEはレストランのあるホテルの名前です。
■ RATINGはレストランの評価で、そのデフォルト値はNULLです。
表には、次の整合性制約があります。
■ 同じ名前のホテル・レストランが2つ以上あってはならない。
■ HOTEL_NAMEは、HOTEL_DIR表内のホテルを参照する必要がある。
関連項目 関連項目 関連項目 関連項目
CONSTRAINT句、DROP TABLE、ALTER TABLE、SELECT