第1章 表の作成および管理

1-1 表の作成、管理
■表の作成、管理コマンド
内容 構文 説明
表の作成 CREATE TABLE 表名 (
列名 データ型 [列制約構文]
[, 列名 データ型 [列制約構文]]...
[, 表制約構文...])
[TABLESPACE 表領域名]
[記憶領域管理パラメータ];

CREATE TABLE 表名 AS SELECT文;
TABLESPACEを指定しないとSYSTEM領域に作成される。
副問い合わせで既存表から作成された表にはNOT NULL制約のみコピーされる。 列名の抽出可。
WHERE条件によるデータの取り出し可。
表の確認 DESC[RIBE] 表名 SQL*PLUSコマンド
表の削除 DROP TABLE 表名 [CASCADE CONSTRAINTS]; 参照整合性制約(FOREIGN KEY制約)が設定されている親表を削除するには、まず、子表を削除しなければエラーになります。
子表を残し、親表のみを削除する場合は、CASCADE CONSTRAINTSオプションを使用して、親表を削除することが出来ます。
この場合、親表と参照整合性制約が削除されます。
表データの削除 TRUNCATE TABLE 表名 表から全ての行を削除し表領域が開放されます。
暗黙のコミットが発生する為、ロールバックはできません。
表データは削除されるが、表定義は残ります。
表名の変更 RENAME 旧表名 TO 新表名 参照制約がある場合は、自動的に新しい表名に参照先が変更されます。
列の追加 ALTER TABLE 表名
ADD(列名 データ型 [列制約構文]
[, 列名 データ型 [列制約構文]]...);
既存表の最後に追加されます。
既にデータがある表に追加された場合は、追加させた列のデータはNULLになります。
既存データがある場合はNOT NULL制約はつけられません。
(ただし、DEFAULT値が設定されている場合には、DEFAULT値が入ります。 )
列の変更 ALTER TABLE 表名
MODIFY(列名 データ型 [NOT NULL]
[, 列名 データ型 [NOT NULL]]...);
列名を変更することは出来ません。
データ型を変更することはできません。
列のサイズを大きくする操作は、いつでも可能です。
列のサイズを小さくする、NOT NULL制約の追加操作は、
その表にデータが全くない場合、列の値が全てNULLの場合にのみ可能です。
列の削除 ALTER TABLE 表名
DROP COLUMN 列名
[CASCADE CONSTRAINS]
1度に削除できるのは1列までです。
最後の列は削除できません。
一度、削除した列を元に戻すことはできません。
未使用列の設定 ALTER TABLE 表名 
SET UNUSED COLUMN 列名
1度未使用を設定した列は元に戻すことはできません。
未使用列の削除 ALTER TABLE 表名 
DROP  UNUSED COLUMNS
表にコメントをつける COMMENT ON  |TABLE 表名|COLUMN 表名.列名|  IS 'コメント' コメントの削除も同じ構文

■表名の命名規則
  ・長さは30バイト以下で、1文字目は数字でないこと。     →ただし、""で囲んだ場合はエラーにならない。
  ・英文字、記号($_#)ひらがな、カタカナ、漢字が使用できる
  ・Oracleの予約語は使用できない。
  ・同一スキーマ内で一意な表名、同一表内で一意な列名は使用できない
  ・大文字小文字の区別されない

■データディクショナリ
表名 説明
USER_XXXX ユーザーに関する情報 ユーザーに関する表のコメント:USER_TAB_COMMENTS
ALL_XXXX ユーザがアクセス可能な情報 ユーザがアクセス可能な列のコメント:ALL_COL_COMMNETS
DBA_XXXX データベースの全体の情報を格納(管理者のみアクセス可)
V$_XXXX データベースのパフォーマンス及びロック等の動的情報

■ユーザが所有するオブジェクトの確認
表名 説明
USER_TABLES ユーザの所有するテーブル
USER_OBJECTS ユーザの所有するオブジェクト(索引を含む)
USER_CATLOG(CAT) ユーザの所有する表・ビュー・シノニム・順序


1-2 列定義に使用できるデータ型の種類
■文字型データ型
型名 説明 サイズ
CHAR(len) 固定長データ 1〜2000バイトまで(Oracle7では256バイトまで)
省略時は1
VARCHAR(len) 可変長データ 1〜4000バイトまで(Oracle7では2000バイトまで)
LONG 可変長データ 最大2Gバイトまで
但し、1表に1つの列しか使用できない。
WHERE句、GROUP BY句では使用できない。

■数値データ型
型名 説明 サイズ
NUMBER(n[,s]) 数値データ型 nは最大制度38桁まで。
sは位取りを指定します。
省略時は38桁の浮動小数点。

■日付データ型
型名 説明 サイズ
DATE 4桁年、月、日、時、分、秒 固定長7バイト

■バイナリデータ型
型名 説明 サイズ
RAW(s) 可変長バイナリデータ 1〜2000バイトまで(Oracle7では256バイトまで)
LONGRAW 可変長バイナリデータ 最大2Gバイトまで
但し、1表に1つの列しか使用できない。
WHERE句、GROUP BY句では使用できない。

■固定長マルチバイトデータ型
型名 説明 サイズ
NCHAR 固定長マルチバイト文字列データ型 1〜2000バイトまで
NVARCHAR2 可変長マルチバイト文字列データ型 1〜4000バイトまで

■LOB型
型名 説明 サイズ
BLOB バイナリデータ型 最大4Gバイトまで
表と異なる表領域に格納できる
CLOB シングルバイトの文字列 最大4Gバイトまで
表と異なる表領域に格納できる
NCLOB シングルバイト又は固定長マルチバイトの文字列データ型 最大4Gバイトまで
表と異なる表領域に格納できる
BFILE 読み取り専用のバイナリーデータ型。 最大4Gバイトまで
表と異なる表領域に格納できる
OSファイルとして保存されているファイルを指定可能

■ROWID型
型名 説明 サイズ
ROWID 表の中の一意なアドレスを表す16進数 特になし

■日付および期間型
型名 説明 サイズ
TIMESTAMP[p] DATE型の拡張
年、月、日、時、分、秒、小数値を格納
pは少数秒の桁数を0〜9で示す
TIMESTAMP[p] WITH TIME ZONE タイムゾーン変位を含みます
タイムゾーン現地時刻と国際標準時(UTC)の差
pは少数秒の桁数を0〜9で示す
TIMESTAMP[p] WITH LOCAL TIME ZONE データベースとのタイムゾーン変位を含みます pは少数秒の桁数を0〜9で示す
INTERVAL YEAR[y] TO MONTH 時間間隔(年月)を格納 yはYEAR日時フィールドの桁数を指定
INTERVAL DAY[d] TO SECOND[s] dはDAY日時フィールドの桁数を指定
sはSECOND日時フィールドの桁数を指定