テーブル、インデックススクリプト

※コピーすると改行が抜ける場合はソースをダブルクリックして強調表示を外してからコピーしてください

--テーブル作成(詳細)
CREATE TABLE TAB1
  (COL1 NUMBER(6),
   COL2 VARCHAR2(10),
   COL3 VARCHAR2(5),
   CONSTRAINT "PK_TAB1" PRIMARY KEY(COL1)
    USING INDEX
    TABLESPACE "USERS"
    PCTFREE 10            --最低限ブロックで確保する空き領域
    INITRANS 2            --9i以降は最低値2
    MAXTRANS 255          --10G以降廃止(一律255)
    COMPUTE STATISTICS    --10G以降のデフォルト
    STORAGE(
     INITIAL 64K          --LOCAL管理の場合は1エクステントとは限らない
     NEXT 64K             --LOCAL管理の場合無視
     MINEXTENTS 1         --
     MAXEXTENTS 10        --LOCAL管理の場合は無視
     PCTINCREASE 0        --LOCAL管理の場合は無視
     FREELISTS 1          --ASSM表領域の場合は無視
     FREELIST GROUPS 1    --ASSM表領域の場合は無視
     BUFFER_POOL DEFAULT) --
    ENABLE)
  PCTFREE 10           --最低限ブロック内で確保する空き領域(%)
  PCTUSED 40           --ブロック内の領域が再利用される閾値(%)(ASSMが有効の場合無視)
  TABLESPACE USERS
  NOCOMPRESS
  LOGGING
  STORAGE(
    INITIAL 64K        --LOCAL管理の場合MINEXTENTSのサイズとあわせて調整される
    NEXT 64K           --LOCAL管理の場合は無視
    PCTINCREASE 0      --LOCAL管理の場合は無視
    MINEXTENTS 5       --
    MAXEXTENTS 100     --LOCAL管理の場合は無視
    FREELISTS 1          --ASSM表領域の場合は無視
    FREELIST GROUPS 1    --ASSM表領域の場合は無視
    BUFFER_POOL DEFAULT) --その他、KEEPやRECYCLE等
;

--プライマリキーの指定
--例1
CREATE TABLE TAB1
  (COL1 NUMBER(6) PRIMAEY KEY,
   COL2 VARCHAR2(10));

--例2
CREATE TABLE TAB1
  (COL1 NUMBER(6) ,
   COL2 VARCHAR2(10),
   PRIMARY KEY (COL1));

--例3
CREATE TABLE TAB1
  (COL1 NUMBER(6) ,
   COL2 VARCHAR2(10),
   CONSTRAINT PK_TAB1 PRIMARY KEY (COL1));

--例4(制約と索引は別の名前にすることもできるが、制約削除の挙動が変わるので推奨しない)
CREATE TABLE TAB1
 (COL1 NUMBER(6) ,
  COL2 VARCHAR2(10),
  CONSTRAINT PK_TAB1 PRIMARY KEY (COL1)
   USING INDEX(CREATE UNIQUE INDEX PK_TAB1 ON TAB1(COL1)) );

--コメント
COMMENT ON TABLE TAB1 IS 'コメント';

--列追加
ALTER TABLE TAB1 ADD COL2 VARCHAR2(20);

--列定義変更
ALTER TABLE TAB1 MODIFY(COL2 VARCHAR2(100));

--NOT NULL制約追加
ALTER TABLE TAB1 MODIFY(COL1 NOT NULL);

--外部参照表
CREATE TABLE TAB1 (COL1 NUMBER PRIMARY KEY);
CREATE TABLE TAB2 (COL1 NUMBER , CONSTRAINTS COL1_FK FOREIGN KEY(COL1) REFERENCES TAB1(COL1));

--ファンクションインデックス
CREATE INDEX I_F_COL1 ON TAB1(TO_CHAR(COL1));

--テーブルにエクステントを手動で割り当てる
ALTER TABLE TAB1 ALLOCATE EXTENT;

--表領域移動
ALTER TABLE TAB1 MOVE TABLESPACE USERS;

--ASSM環境のセグメント縮小(HWMの引き下げ)(10g~)
ALTER TABLE TAB1 ENABLE ROW MOVEMENT;
ALTER TABLE TAB1 SHRINK SPACE COMPACT CASCADE;
ALTER TABLE TAB1 DISABLE ROW MOVEMENT;

--INDEX作成
CREATE INDEX TAB1_IDX ON TAB1(COL1) TABLESPACE INDX;
--UNUQUE INDEX作成
CREATE UNIQUE INDEX IDX_TAB1 ON TAB1(COL1) TABLESPACE INDX;
--PRIMARY KEY追加
ALTER TABLE TAB1 ADD CONSTRAINT PK_TAB1 PRIMARY KEY(COL1);

--INDEX無効化(REBUILDすると有効化する)
ALTER INDEX TAB1_IDX UNUSABLE;

--INDEXリビルド
ALTER INDEX TAB1_IDX REBUILD;

--INDEXオンラインリビルド(EE専用)
ALTER INDEX TAB1_IDX REBUILD ONLINE;


--関連ディクショナリ
SELECT * FROM DBA_TABLES;
SELECT * FROM DBA_TAB_COLUMNS;
SELECT * FROM DBA_INDEXES;
SELECT * FROM DBA_IND_COLUMNS;
SELECT * FROM DBA_SEGMENTS;
SELECT * FROM DBA_EXTENTS;

マニュアル

一覧(10.2)
リファレンス 10g リリース2(10.2)
SQL リファレンス 10g リリース2(10.2)
★ORACLE案件承ります