Database/Oracle SQL2011.03.07 16:25

made by 도익

keyword
1.alter table을 이용 column 추가
2.alter table을 이용 column 변경
3.alter table을 이용 column 삭제
4.set unused Option
5.제약조건 추가
6.not null 제약조건 추가

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

Alter table을 이용하여 기존 column data type, size, default 값을 변경 할 수 있다.

 

column 추가

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

SQL> alter table dept add (jobid varchar(10) default 'KBS',

col1 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);

 

보통 낮에는 다른 사용자들이 그 columnaccess하고 있으므로 삭제 할 경우 많은 application들이 에러난다. 그렇기 때문에 이렇게 작업하려고 하면 사용자가 없는 밤에 한다.

 

Set unused option

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

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

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

 

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

 

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

제약조건 추가

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

 

EX) primary key 제약조건 추가

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

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

 

EX) foreign 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);


Copyright 김도익 All rights reserved.

Posted by 차칸소년