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;
반응형
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
Oracle XE 컴퓨터 이름(Hostname) 변경후 접속 안될 때 (2) | 2018.04.12 |
---|---|
오라클 테이블 스페이스 생성하기 및 다른 사용자 권한 부여 (0) | 2018.04.12 |
오라클 비밀번호 만료(Oracle password has expired) (0) | 2018.04.09 |
오라클 계층 쿼리(Hierarchical Query)의 사용법 (0) | 2018.04.09 |
Oracle Original Export and Import(exp and imp) (0) | 2018.04.09 |