2013/08/15

07-01.テーブル【テーブル(TABLE)作成】

■テーブルとは?
 テーブルは実際にデーターが保存される場所でCREATE TABLEコマンドで作成できる。

 -テーブルはデーターベースの基本データー保存単位
 -データーベースはユーザーがアクセス可能なすべてのデーターを保有し、レコードとコラムで構成されている
 -テーブルはシステム内で独立的に使用されたいエンティティを表現できる。
  例えば、会社で社員や製品に関するオーダーはテーブルで表現可能だ
 -テーブルはエンティティ間の関係を表現できる、
  つまり、テーブルは社員と作業スキルまたは製品と注文との関係を表現するのに使用できる。
 -テーブル内の外部キー(Forelgn Key)はエンティティ間の関係を表す。
 -コラム:テーブルの各コラムはエンティティの属性を表す。
 -行(ROW,レコード):テーブルのデーターは行に保存される。

※テーブル作成時の制限と注意点
 -テーブル名とコラムは英文字で始まりA~Zの文字、0~9の数字、$,#,_(under bar)を使用できる。(空白使用不可)
 -テーブルコラム名は30文字以内、予約語は使用不可
 -オラクルテーブル1アカウント内でテーブル名は他テーブル名とかぶってはいけない。
 -1テーブル内で同名のコラムは存在できない、他テーブルのコラム名は同名可能。

■テーブル作成文

CREATE TABLE [schema.]table_name
(column datatype
 [, column datatype ...]
)
 [TABLESPACE tablespace]
 [PCTFREE integer]
 [PCTUSED integer]
 [INITRANS integer ]
 [MAXTRANS integer]
 [STORAGE storage-clause]
 [LOGGING | NOLOGGING]
 [CACHE | NOCACHE];

-schema : テーブルの所有者
-table_name : テーブル名
-column : コラム名
-datatype : コラムのデータータイプ
-TABLESPACE : テーブルがデーターを保存するテーブルスペース
-PCTFREE : ブロック内に存在しているRowへUpdateできるように予約させるブロックの%値を指定
  ※例えば"PCTFREE 20"で設定すると、データー風呂kkの20%を使用可能な空領域として維持し、各ブロック行の更新に使用するって意味!
-PCTUSED : オラクルサーバがテーブルの各データーブロックに対して維持しようとする使用領域の最小サイズを%値で指定する。
  ※例えば"PCTUSED 40"で設定すると、データーブロックの使用領域が39%より小さくならないと新しい行を追加できないって意味!
-INITRANS : 1つのデーターブロックに指定できる初期トランザクション値を指定する。
-MAXTRANS : 1つのデーターブロックに指定できる最大トランザクション値を指定する。
-STORAGE : エクステントストレージに関する値を指定する。
-LOGGING : テーブルに対して全ての作業がREDOログファイルに記録されるように指定する。
-NOLOGGING : REDOログファイルにテーブル作成と特定のデーターロードを記録しないように指定する。


■テーブル作成例文
 テーブル作成時の注意事項
 -テーブル名を指定して各コラムは"()"で閉じる。
 -コラムの次のデータータイプは必ず指定しなければいけない。
 -各コラムは","で区別、最後は";"で閉める。
 -1つのテーブルで同じコラム名は×、別テーブルでの同じコラム名は○。


--emp2とdept2テーブルを作成する

SQL> CREATE TABLE EMP2(
  2  EMPNO    NUMBER            CONSTRAINT emp_pk_empno PRIMARY KEY,
--   (コラム) (データータイプ)  (制約条件)
  3  ENAME VARCHAR2(20),
  4  JOB   VARCHAR2(40),
  5  MGR   NUMBER,
  6  HIREDATE DATE,
  7  SAL   NUMBER,
  8  COMN  NUMBER,
  9  DEPTNO NUMBER);

表が作成されました。

SQL> CREATE TABLE DEPT2(
  2  DEPTNO NUMBER CONSTRAINT dept_pk_deptno PRIMARY KEY,
  3  DNAME VARCHAR2(40),
  4  LOC VARCHAR2(50));

表が作成されました。

SQL>


■USERが所有しているすべてのテーブル確認
--USER_TABLESデーターライブラリを確認するとユーザーが所有しているテーブルを確認できる。

SQL> SELECT table_name FROM USER_TABLES;

TABLE_NAME
------------------------------
EMP
DEPT
BONUS
SALGRADE
DUMMY
EMP2
DEPT2

7行が選択されました。

SQL>



0 件のコメント:

コメントを投稿

QLOOKアクセス解析