[Oracle] 오라클 컬럼 변경 방법 (컬럼명, 데이터 타입, 사이즈)

오라클에서 컬럼을 변경 할 경우 ALTER TABLE를 사용하며,  컬럼의 데이터 타입, 길이를 수정할 때는 MODIFY, 컬럼명을 수정할 때는 RENAME COLUMN을 사용하면 된다.

 

오라클 컬럼명, 데이터 타입 변경

 

컬럼 데이터 타입 변경

--데이터 타입 변경 : NUMBER(4) -> VARCHAR2(4)
ALTER TABLE emp MODIFY editid VARCHAR2(4);

ALTER TABLE [테이블명] MODIFY [컬럼명] [새로운 데이터타입(길이)]

데이터 타입을 변경해야 하는 경우 해당 컬럼의 값을 모두 지워야 변경이 가능하다.

 

컬럼 길이(크기) 변경

--데이터 길이(크기) 변경 : VARCHAR2(4) -> VARCHAR2(5)
ALTER TABLE emp MODIFY editid VARCHAR2(5);

ALTER TABLE [테이블명] MODIFY [컬럼명] [데이터타입(새로운 길이)]

컬럼 길이를 변경할 경우 변경할 컬럼 길이보다 길이가 긴 값이 있으면 안 된다.

 

컬럼 명 변경

--컬럼명 변경 : editid -> edit_id
ALTER TABLE emp RENAME COLUMN editid TO edit_id

ALTER TABLE [테이블명] RENAME COLUMN [이전 컬럼명] TO [새로운 컬럼명]

 

컬럼 기본 값, NOT NULL 변경

--기본 값 지정
ALTER TABLE emp MODIFY editid VARCHAR2(5) DEFAULT '1000';

--NOT NULL 지정
ALTER TABLE emp MODIFY editid VARCHAR2(5) NOT NULL;

--NOT NULL 제거(변경)
ALTER TABLE emp MODIFY editid VARCHAR2(5) NULL;

--기본 값 + NOT NULL 지정
ALTER TABLE emp MODIFY editid VARCHAR2(5) DEFAULT '1000' NOT NULL;

 

데이터 타입 변경 시 주의사항

컬럼의 데이터 타입을 변경하기 위해서는 해당 컬럼의 값을 모두 지워야 변경이 가능하다.

 

그렇지 않으면 아래의 오류가 발생한다.

ORA-01439: column to be modified must be empty to change datatype 

 

작업순서

 

1. TEMP 컬럼 추가 한다.
2. TEMP 컬럼에 변경할 컬럼의 값을 옮긴다. (UPDATE)
3. 변경할 컬럼의 값을 모두 지운다다. (DELETE)
4. 컬럼의 데이터 타입을 변경한다.
5. TEMP 컬럼의 값을 원 컬럼으로 옮긴다. (UPDATE)
6. TEMP 컬럼을 삭제 한다.

 

컬럼의 길이 변경(줄일 때) 주의사항

컬럼의 길이를 줄일 경우 해당 컬럼의 값 중 변경할 길이보다 큰 값이 있으면 오류가 발생한다.

 

ORA-01441: cannot decrease column length because some value is too big 

 

이럴 때는 해당 컬럼의 길이를 조회하여 변경할 길이보다 큰 값이 있는지 확인하고 값을 변경해야 한다.

SELECT *
  FROM emp
 WHERE length(edit_id) > 4

 

 

댓글

Designed by JB FACTORY