[db] Alter Table DDL

database 2012. 9. 28. 14:26
반응형

COLUMN
-------------------------------------------------------------------------------------------
삭제
ALTER TABLE [table_name] DROP COLUMN column_name;
 
추가
ALTER TABLE [table_name] ADD (column_name data_type(n));
 
수정
ALTER TABLE [table_name] MODIFY (column_name data_type( ));
 
DEFAULT VALUE, NOT NULL조건
ALTER TABLE [table_name] MODIFY (column_name column_type DEFAULT 'value' NOT NULL);
>> 이렇게 해주면, 컬럼이 생성되며 default 값은 'value'가 되고, NOT NULL 조건이 형성되게 된다.

이름 바꾸기
ALTER TABLE [table_name] RENAME COLUMN old_column_name TO new_column_name;
--------------------------------------------------------------------------------------------
 
 
TABLE
--------------------------------------------------------------------------------------------
테이블명 바꾸기
ALTER TABLE [table_name] RENAME TO [new_table_name];
 
테이블 통계 정보 생성 하기
ANALYZE TABLE [table_name] COMPUTE STATISTICS;
 
새로운 정보를 수집하기 전에 기존 정보를 삭제 할때
ANALYZE TABLE [table_name] DELETE STATISTICS;
 
특정 컬럼에 대한 DATA의 분포
ANALYZE TABLE [table_name] COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
 
9iR2경우 테이블을 삭제하고 다시 생성하면,
히스토그램이 또는 기존에 가지고 있던 통계정보들이 날라가는데,
이후 통계 작업을 생성하면 히스토그램이 no에서 yes로 바뀌어져 있는다.
 
테이블 통계 정보 생성하기 다른 방법
BEGIN
   DBMS_STATS.GATHER_TABLE_STATS('shema_name', 'table_name', CASCADE => TRUE);
END;
>> 해당 테이블에 의존된 오브젝트 들도 통계치 데이터를 생성한다. (좀더 자세히 알아봐야겠다.)
>> 700만건, 인덱스 2, PK, 통계치 만드니 1시간 걸렸다. 원래 이렇게 느린가!!!
 
※테이블에 통계정보를 생성하면, histogram 이 No에서 Yes로 바뀐다.
 
 
파티션 추가
ALTER TABLE [table_name] ADD PARTITION [partition_name]
VALUES LESS THAN ('high_value') TABLESPACE [tablespace_name];
--------------------------------------------------------------------------------------------
 
 
CONSTRAINT PK
--------------------------------------------------------------------------------------------
PK추가
ALTER TABLE [table_name] ADD CONSTRAINT [index_name]
PRIMARY KEY ( column_name )
USING INDEX
TABLESPACE  tablespace_name;

PK해제
ALTER TABLE table_name DROP PRIMARY KEY;
 
이름 바꾸기 (CONSTRAINT RENAME)
ALTER TABLE [table_name] RENAME CONSTRAINT [before constraint name] TO [after constraint name];

--------------------------------------------------------------------------------------------
 
 
INDEX
--------------------------------------------------------------------------------------------
이름 바꾸기
ALTER INDEX index_name RENAME TO new_index_name;
 
인덱스 삭제
DROP INDEX index_name;
 
인덱스 생성
CREATE INDEX index_name ON table_name
(column1, column2....)
no/logging
TABLESPACE tablespace_name
no/parallel;
--------------------------------------------------------------------------------------------
 
 
 
STORAGE
--------------------------------------------------------------------------------------------
MAXEXTENT 사이즈 조절
ALTER TABLE table_name STORAGE (MAXEXTENTS number);
 
해당 TABLE_NAME에 MAXEXTENTS를 NUMBER만큼 늘린다.

--------------------------------------------------------------------------------------------
 
TABLESPACE
--------------------------------------------------------------------------------------------
테이블 스페이스 변경
 
ALTER TABLE table_name MOVE TABLESPACE tablespace_name;
 
ALTER INDEX index_name REBUILD TABLESPACE tablespace_name;
 
>> 기존 테이블 스페이스를 변경 시켜 준다.
 
>> REBUILD : 전에는 REBUILD 가 없이, DROP 후 CREATE 했어야 했다.
                  인덱스는 MOVE가 아닌 REBUILD로 테이블 스페이스를 이동한다.

 

반응형