본문 바로가기

Study/Oracle

Oracle : Alter table 사용해서 테이블 구조 변경하기


1. alter table을 이용 column 추가

2. alter table을 이용 column 변경

3. alter table을 이용 column 삭제

4. set unused option

5. 제약조건 추가

6. not null 제약조건 추가


1. Alter table(column 추가, 변경, 삭제)

- 기존 컬럼의 data type, size, default 값을 변경할 수 있다.


column 주가

alter table 테이블명 add (컬럼명 데이터타입 [default 디폴트값]);

SQL> alter table dept add(jobid varchar(10) default 'KBS', col number(3), col2 number(4));

주의 할 점은 column이 추가되는 위치를 지정해 줄 수는 없다. 항상 뒤로 들어감


column data type 변경

alter table 테이블명 modify(컬럼명 데이터타입(길이));

SQL> alter table dept modify(jobid varchar2(6));


주의 : 기존 컬럼에 데이터가 들어 있다면 서로 호환 되는 것 끼라만 데이터타입의 변경이 가능하다(ex : varchar2 ->char)


column 삭제

alter table 테이블명 drop column 컬렴명;

SQL> alter table dept drop column jobid;

SQL> alter table dept drop (col1, col2);


보통 낮에는 다른 사용자들이 그 column을 access하고 있으므로 삭제할 경우 많은 application들이 에러난다. 그렇기 때문에 작업하려면 사용자가 없는 시간대에 할 것


set unused option

mark만 하고 사용하지 않겠다는 의미. 후에 사용자가 없을때 column 삭제 작업을 한다.

alter table 테이블명 set unused(컬럼명, 컬럼명, 컬럼명);

SQL>alter table dept set unused(col1, col2, col3);


이렇게 해 두면 describe 명령어로 테이블 구조를 확인 해 보아도 나오지 않는다.


2. Alter table(제약조건 추가, 제약조건 삭제)

제약조건 추가

alter table 테이블명 add constraint 제약조건이름 제약조건;


ex) primary key 제약조건 추가

SQL> alter table emp add constraint emp_empno_pk primay key(empno);

(암시적으로 primary key에는 unique index가 생성된다)


ex) forign key 제약조건 추가

SQL> alter table emp add constraint emp_mgr_fk foreign key(mgr) references emp(empno);


주의 : not null 제약조건은 add가 아니라 modify 옵션을 써서 추가한다.

alter table 테이블명 modify (컬럼명 constraint 제약조건이름 NOT NULL);

SQL> alter table emp modify (ename constraint emp_ename_nn NOT NULL);