Database/Oracle

Oracle DB) DDL - ALTER 테이블 수정(add, rename, modify, drop)

luana_eun 2022. 3. 22. 17:17
728x90

기본 명령어

ALTER TABLE 테이블명
ADD, MODIFY, DROP

 

 

1. ADD

추가 가능한 것: 컬럼, 제약조건

 

1) 컬럼 추가

ALTER TABLE emp01
ADD (job_id varchar2(10));

 

2) 제약조건 추가

alter table 테이블명
add constraint 제약조건명 제약조건유형(컬럼명);
-- 제약조건 추가(table level 문법)
alter table emp01
add constraint emp_mgr_fk
    foreign key (mgr_id)
    references emp2(emp_id);
alter table emp01
add constraint emp_id_pk primary key(emp_id);

 

 

2. MODIFY

수정 가능한 것: 데이터타입, default값, 컬럼사이즈, 제약조건 

ALTER TABLE emp01
MODIFY (job_id varchar2(20));
-- 제약조건 추가(column level문법)
alter table emp01
modify job_id constraint emp_mgr 
    foreign key references emp2(emp_id);;

** column level 문법을 사용할때는 foreign key를 생략할 수 있지만,

   table level 문법은 생략불가이므로, 

   modify로 제약조건을 추가할때는 외래키 키워드를 생략할 수 있다. 

 

 

 

3. RENAME

1) 컬럼명 변경. 

ALTER TABLE 테이블명
RENAME COLUMN 기존컬럼명 TO 새로운컬럼명;

2) 제약조건명 변경

ALTER TABLE 테이블명
RENAME CONSTRAINT 기존제약조건명 TO 새제약조건명;

3) 테이블명 변경

ALTER TABLE 테이블명
RENAME 기존테이블명 TO 새테이블명;

 

 

4. DROP

삭제 가능한 것: 컬럼, 제약조건, 테이블

   drop은 문법이 두개다.

   column키워드를 적고 컬럼명을 적든지, column키워드를 생략하고 괄호()안에 컬럼명을 적는 방법. 

 

3-1) 컬럼 삭제

alter table emp01
drop column 컬럼명;
alter table emp01
drop (컬럼명);

 

3-2) 제약조건 삭제

alter table emp01
drop constraint 제약조건명;

 PK의 경우, 삭제할 방법이 하나 더 있다. -> 제약조건 유형으로 삭제

alter table 테이블명
drop primary key;

      제약조건을 삭제할때는 주의해야한다.

      PK나 UK의 경우, 이미 어떤 컬럼이 외래키로 참조하고 있을 수 있기때문에, 

      누군가 참조하고있는경우에는 삭제되지않고 오류가 난다. 

      그럼에도 연결된 제약조건까지 같이 삭제하고 싶을때 cascade 키워드를 같이 작성한다. 

alter table 테이블명
drop primary key cascade;

3-3) 테이블 삭제

drop table 테이블명;

 


제약 조건 추가 방법

위에서도 적었지만 한번 더 정리!

 

방법1) alter add 사용. table level 문법

alter table 테이블명
add constraint 제약조건명 제약조건유형(컬럼명);

 

방법2) alter modify 사용, column level 문법

alter table 테이블명
modify 컬럼명 constraint 제약조건명 제약조건유형;

 

주의!!) not null은 컬럼레벨의 문법만 사용 가능하므로

          생성할때도 modify를 사용해야한다. 

 

728x90