Oracle管理者のためのSQLリファレンス

表の確認/作成/変更/削除

表はデータを格納する領域の基本単位で、表名と列の集合で定義され、行には列で定義されたデータが記録されます。各列には、列名、データ型、幅を割り当てます。また列には整合性制約(ルール)を指定できます。表データは、SQLを使用して問い合わせ、削除、更新ができます。(SQLの表記ルールは、こちらから参照できます)

表の定義を確認する
DESC [schema.]table[@connect_identifier]
-- または
DESCRIBE [schema.]table[@connect_identifier]
表の定義を確認するには、SQL*PLUSのDESCRIBE(省略形はDESC)コマンドを使用し表名を指定します。DESCRIBEコマンドでは列名、データ型、NOT NULL制約を確認できます。

リレーショナル表を作成する
CREATE [GLOBAL TEMPORARY] TABLE [schema.]table
(column datatype
    [SORT]
    [DEFAULT expr]
    [inline_constraint [inline_constraint …]]
 [, column datatype
      [SORT]
      [DEFAULT expr]
      [inline_constraint [inline_constraint …]] …
 ]
)
[out_of_line_constraint [out_of_line_constraint …]]
[ON COMMIT {DELETE | PRESERVE} ROWS]
[PCTFREE integer]
[PCTUSED integer]
[INITRANS integer]
[STORAGE (storage [storage …])]
[TABLESPACE tablespace]
[LOGGING | NOLOGGING]
[COMPRESS | NOCOMPRESS];
表を作成するには、CREATE TABLE文を使います。必須の項目は表名(table)、列名(column)、列のデータ型(datatype)です。

GLOBAL TEMPORARY/ON COMMITオプション
一時表を作成する場合、 GLOBAL TEMPORARYを指定します。作成された表は一時的で、その定義はすべてのセッションから参照できます。ON COMMIT句は、一時表のデータ保持期間を指定します。DELETE ROWSはトランザクション固有で、デフォルトです。コミット後に表は切り捨てられます。PRESERVE ROWSはセッション固有で、セッション終了時に表は切り捨てられます。

SORTキーワード
表をハッシュ・クラスタの一部として作成する場合、およびクラスタ列でもある列にはSORTキーワードを指定します。これにより、ハッシュ・ファンクションを適用する前にこの列でクラスタの行をソートするように指示できます。

DEFAULTオプション
DEFAULT句で値(expr)を指定ておくと、INSERT文が発行されたときに列の値を省略した場合、この値が自動的に挿入されます。

制約句オプション(表内指定)
制約句(inline_constraint)を使用して、整合性制約を列定義の一部として作成できます。ここで指定できる制約は、一意制約、主キー制約、参照制約、NOT NULL制約、CHECK制約、REF制約です。制約の指定方法は「制約の確認/作成/削除」を参照してください。制約の作成方法は2つあり、1つは列定義の一部として作成する表内定義、もう1つは表定義の一部として作成する表外指定です。

制約句オプション(表外指定)
制約句(out_of_line_constraint)を使用して、整合性制約を表定義の一部として作成できます。ここで指定できる制約は、一意制約、主キー制約、参照制約、CHECK制約、REF制約です。NOT NULL制約は表外指定では作成できません(表内指定で行う)。制約の指定方法は「制約の確認/作成/削除」を参照してください。制約の作成方法は2つあり、1つは列定義の一部として作成する表内定義、もう1つは表定義の一部として作成する表外指定です。

物理プロパティ(PCTFREE、PCTUSED、INITRANS)
物理プロパティを使ってPCTFREE、PCTUSED、INITRANSのパラメータ値および表の記憶特性を指定できます。この句を省略すると、PCTFREE=10、PCTUSED=40、INITRANS=1、に設定されます。

STORAGE句オプション
STORAGE句オプションを使って、オブジェクトの格納方法(記憶域パラメータ値)を指定できます。storageに指定できるパラメータは、INITIAL、NEXT、MINEXTENTS、MAXEXTENTS、PCTINCREASE、FREELISTS、FREELIST GROUPS、OPTIMAL、BUFFER_POOL、です。それぞれのパラメータに必要な値を指定します。

TABLESPACE句オプション
表を作成する表領域(tablespace)を指定します。TABLESPACE句を省略すると、その表を含むスキーマ所有者のデフォルト表領域内に作成されます。

ロギング属性オプション
表の記憶特性の作成をREDOログ・ファイルに記録する(LOGGING)、しない(NOLOGGING)を指定します。

表圧縮オプション
表圧縮オプションは、ヒープ構成表に対してのみ有効で、ディスク使用量を削減するためにデータ・セグメントの圧縮を指定できます。COMPRESSキーワードを指定すると表の圧縮が使用可能になり、NOCOMPRESSキーワード(デフォルト)で表の圧縮が使用禁止になります。
関連項目:表のデータを切り捨てる 表を削除する 制約の確認/作成/削除

表に列を追加する
ALTER TABLE [schema.]table ADD
(column datatype
    [DEFAULT expr]
    [inline_constraint [inline_constraint …]]
 [, column datatype
    [DEFAULT expr]
    [inline_constraint [inline_constraint …]] …
 ]
);
既存の表に列を追加するには、ALTER TABLE文で表名(table)を指定し、ADD句で追加する列名(column)と列のデータ型(datatype)を指定します。オプションのDEFAULT句を使用してデフォルト値(expr)を指定できます。オプションの制約句(inline_constraint)を使用して、整合性制約を作成できます。制約の指定方法は「制約の確認/作成/削除」を参照してください。
関連項目:制約の確認/作成/削除 列の定義を変更する 列を削除する

列の定義を変更する
ALTER TABLE [schema.]table MODIFY
(column datatype
    [DEFAULT expr]
    [inline_constraint [inline_constraint …]]
 [, column datatype
    [DEFAULT expr]
    [inline_constraint [inline_constraint …]] …
 ]
);
既存の表の列定義を変更するには、ALTER TABLE文で表名(table)を指定し、MODIFY句で変更する列名(column)と列のデータ型(datatype)を指定します。既存データがある場合、変更する列がすべてNULLであれば列のデータ型を変更できます。文字型とRAW型の列のサイズ、数値型の列の精度は、いつでも大きくできます。また、変更を行ってもデータを変更しなくて済む場合に限り、列のデータ型のサイズを小さくできます。オプションのDEFAULT句を使用してデフォルト値(expr)を指定できます。オプションの制約句(inline_constraint)を使用して、整合性制約を作成できます。制約の指定方法は「制約の確認/作成/削除」を参照してください。
関連項目:制約の確認/作成/削除 表に列を追加する

表の名前を変更する
ALTER TABLE [schema.]table RENAME TO new_table_name;
表名を変更するには、ALTER TABLE文で表名(table)を指定し、RENAME TO句で新たな表名(new_table_name)を指定します。

列を削除する
ALTER TABLE [schema.]table DROP
{COLUMN column |
 (column [, column …])
}
[CASCADE CONSTRAINTS]
[INVALIDATE]
[CHECKPOINT integer];
特定の列を削除するには、ALTER TABLE文で表名(table)を指定し、DROP句で削除したい列名を指定します。列データを削除した場合、その列に定義されているすべての索引、その列を参照しているすべての制約、その列に関連付けられていた統計タイプを使用して収集したすべての統計情報は削除されます。

CASCADE CONSTRAINTS
CASCADE CONSTRAINTSを指定すると、削除する列を参照する外部キー制約やすべての複数列制約を削除できます。ほかの表の列や対象の表でほかの列が参照している制約がある場合は、CASCADE CONSTRAINTSを指定する必要があります。

INVALIDATE
INVALIDATEキーワードを使用するとビュー、トリガー、ストアド・プログラム・ユニットなどのすべての依存オブジェクトを無効にできます。ただし、無効にできるのはローカル依存性のみです。

CHECKPOINT
CHECKPOINTを使用すると、integerで指定した行を処理した後にDROP COLUMN操作のチェックポイントが適用されます。integerはオプションで、指定しないとデフォルトの512が設定されます。
関連項目:表に列を追加する

エラーで中断した列削除を再開させる
ALTER TABLE [schema.]table
DROP COLUMNS CONTINUE
[CHECKPOINT integer];
列の削除中にエラーが発生して処理が中断した場合、ALTER TABLE文のDROP COLUMNS CONTINUE句を指定することで列削除処理をを続行できます。

CHECKPOINT
CHECKPOINTを使用すると、integerで指定した行を処理した後にDROP COLUMN操作のチェックポイントが適用されます。integerはオプションで、指定しないとデフォルトの512が設定されます。
関連項目:列を削除する

列に未使用マークを付ける
ALTER TABLE [schema.]table SET UNUSED
{COLUMN column |
 (column [, column …])
}
[CASCADE CONSTRAINTS]
[INVALIDATE];
列を削除するのは負荷の大きい処理です。このため、列を未使用としてマーク付けしておき、夜間などサーバの負荷が小さいときに削除するといった運用が可能です。列に未使用マークを付けるには、ALTER TABLE文でSET UNUSED句を使用し、マーク付けする列を指定します。

CASCADE CONSTRAINTS
CASCADE CONSTRAINTSを指定すると、削除する列を参照する外部キー制約やすべての複数列制約を削除できます。ほかの表の列や対象の表でほかの列が参照している制約がある場合は、CASCADE CONSTRAINTSを指定する必要があります。

INVALIDATE
INVALIDATEキーワードを使用するとビュー、トリガー、ストアド・プログラム・ユニットなどのすべての依存オブジェクトを無効にできます。ただし、無効にできるのはローカル依存性のみです。
関連項目:未使用マークを付けた列を削除する 列を削除する エラーで中断した列削除を再開させる

未使用マークを付けた列を削除する
ALTER TABLE [schema.]table
DROP UNUSED COLUMNS
[CHECKPOINT integer];
未使用マークを付けた列を削除するには、ALTER TABLE文でDROP UNUSED COLUMNS句を指定します。未使用マークされているすべての列を表から削除できます。

CHECKPOINT
CHECKPOINTを使用すると、integerで指定した行を処理した後にDROP COLUMN操作のチェックポイントが適用されます。integerはオプションで、指定しないとデフォルトの512が設定されます。
関連項目:列に未使用マークを付ける 列を削除する エラーで中断した列削除を再開させる

表のデータを切り捨てる
TRUNCATE TABLE [schema.]table
[{PRESERVE | PURGE} MATERIALIZED VIEW LOG]
[{DROP | REUSE} STORAGE];
表のすべてのデータ(行)を切り捨てるには、TRUNCATE TABLE文で表(table)を指定します。

MATERIALIZED VIEW LOG句
MATERIALIZED VIEW LOG句を使用すると、この表に定義されているマテリアライズド・ビュー・ログを保存するか(PRESERVE)、削除するか(PURGE)を指定できます。デフォルトはPRESERVEです。

STORAGE句
DROP STORAGE句を指定すると、削除された行が使用していたすべての領域(MINEXTENTS記憶域パラメータで指定された領域は除く)の割当ては解除されます。NEXT記憶域パラメータは、切捨て処理によってセグメントから最後に削除されたエクステントのサイズに設定されます。これはデフォルトです。REUSE STORAGE句を指定すると、表に割り当てられた削除行の領域は確保されます。
関連項目:リレーショナル表を作成する

表を削除する
DROP TABLE [schema.]table
[CASCADE CONSTRAINTS]
[PURGE];
表を削除するには、DROP TABLE文で表(table)を指定します。

CASCADE CONSTRAINTS句
削除される表の主キーまたは一意キーを参照する参照整合性制約がある場合は、CASCADE CONSTRAINTS句を指定し、これらの参照整合性制約を表とともに削除します。

PURGE句
PURGE句を指定すると、表を削除すると同時に、その表に関連付けられた領域を解放できます。PURGE句を指定した場合、DROP TABLE文はロールバックできません。
関連項目:リレーショナル表を作成する

Oracle管理者のためのSQLリファレンス



   Oracle関連記事リンク集


Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間