[Oracle] 오라클 컬럼 변경 방법 (컬럼명, 데이터 타입, 사이즈)
- 데이터베이스/오라클
- 2020. 7. 9.
오라클에서 컬럼을 변경 할 경우 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 컬럼 추가 한다. |
컬럼의 길이 변경(줄일 때) 주의사항
컬럼의 길이를 줄일 경우 해당 컬럼의 값 중 변경할 길이보다 큰 값이 있으면 오류가 발생한다.
ORA-01441: cannot decrease column length because some value is too big
이럴 때는 해당 컬럼의 길이를 조회하여 변경할 길이보다 큰 값이 있는지 확인하고 값을 변경해야 한다.
SELECT *
FROM emp
WHERE length(edit_id) > 4