오라클 ALTER 명령을 사용해서 테이블 변경하기

프로그래밍/데이터베이스 2018. 4. 9. 22:01
반응형

ALTER 명령어를 사용해서 오라클 테이블 구조를 변경하는 방법에 대해 알아봅니다.


1. 테스트용 테이블 생성 스크립트 입니다.

 

CREATE TABLE TB_BOARD (
    NUM        NUMBER(20,0) NOT NULL,
    NAME       VARCHAR2(20) NOT NULL,
    TITLE      VARCHAR2(100) NOT NULL,
    CONTENT    CLOB,
    D_CODE     VARCHAR(20),
    READ_COUNT NUMBER(10,0) DEFAULT 0 NOT NULL,
    WRITE_DATE DATE NOT NULL
);

CREATE TABLE TB_DEPT (
    D_CODE    VARCHAR2(20) NOT NULL,
    D_NAME    VARCHAR2(255) NOT NULL
);

-- TABLESPACE 사용
CREATE TABLE TB_DEPT (
    D_CODE    VARCHAR2(20) NOT NULL,
    D_NAME    VARCHAR2(255) NOT NULL
) TABLESPACE "USERS" ;

 

2. 주키를 추가 / 제거 합니다.

 

ALTER TABLE TB_BOARD ADD CONSTRAINTS PK_TB_BOARD PRIMARY KEY (NUM);
ALTER TABLE TB_DEPT ADD CONSTRAINTS PK_TB_DEPT PRIMARY KEY (D_CODE);

-- TABLESPACE 지정
ALTER TABLE TB_DEPT ADD CONSTRAINTS PK_TB_DEPT PRIMARY KEY (D_CODE) USING INDEX TABLESPACE "USERS" ;

ALTER TABLE TB_BOARD DROP CONSTRAINT PK_TB_BOARD;
ALTER TABLE TB_DEPT DROP CONSTRAINT PK_TB_DEPT;

 

3. 외래키를 추가/ 제거 합니다.

 

ALTER TABLE TB_BOARD ADD CONSTRAINTS FK_BOARD_DEPT FOREIGN KEY (D_CODE) REFERENCES TB_DEPT(D_CODE);

ALTER TABLE TB_BOARD DROP CONSTRAINT FK_BOARD_DEPT;

 

4. 테이블 이름을 변경합니다. 테이블 이름을 변경하여도 주키와 외래키에 영향이 없습니다.

 

ALTER TABLE TB_DEPT RENAME TO TB_DEPARTMENT;

 

5. 컬럼을 추가합니다. 오라클은 컬럼의 추가 위치를 지정할 수 없습니다. 항상 맨 마지막에 추가 됩니다.

 

ALTER TABLE TB_BOARD ADD (CATEGORY_USE_AT CHAR(1) DEFAULT 'N' NOT NULL);
ALTER TABLE TB_BOARD ADD (CATEGORY_LIST VARCHAR2(1000));

 

6. 컬럼 정보를 수정합니다.

 

-- 컬럼 속성 변경하기 ALTER TABLE TB_BOARD MODIFY (CATEGORY_LIST VARCHAR2(2000)); -- 컬럼명 변경하기 ALTER TABLE TB_BOARD RENAME COLUMN CATEGORY_LIST TO CAT_LIST;

 

7. 컬럼을 사용하지 않음으로 설정합니다. 삭제 작업보다 빠르게 실행됩니다. 나중에 실제로 삭제할 수 있습니다. unused 는 되돌릴 수 없습니다.

 

ALTER TABLE TB_BOARD SET UNUSED (CATEGORY_LIST);

 

8. 컬럼을 삭제 합니다.

 

ALTER TABLE TB_BOARD DROP COLUMN CATEGORY_LIST;
ALTER TABLE TB_BOARD DROP COLUMN CATEGORY_USE_AT;

 

9. INDEX를 생성합니다.

 

-- UNIQUE 인덱스 생성
CREATE UNIQUE INDEX UIX_DEPT ON TB_BOARD(D_CODE ASC);

-- 일반 인덱스 생성
CREATE INDEX IX_DEPT ON TB_BOARD(D_CODE);

-- TABLESPACE 지정
CREATE INDEX IX_DEPT ON TB_BOARD(D_CODE) TABLESPACE "USERS" ;

 

10. 인덱스를 삭제 합니다.

 

DROP INDEX UIX_DEPT;
반응형

댓글을 달아 주세요