Oracle 오라클 컬럼 추가·삭제·이름 변경·COMMENT: 자주 쓰는 ALTER TABLE 7가지

테이블에 컬럼 하나를 더하거나, 이름을 바꾸거나, 설명을 붙이는 일은 Oracle을 쓰면서 가장 자주 만나는 구조 변경입니다. 문법은 짧지만 ADD, DROP, RENAME, COMMENT가 조금씩 달라 매번 검색하게 되지요. 이 글은 자주 쓰는 7가지만 예제와 함께 묶었습니다.

빠른 답
추가는 ADD, 삭제는 DROP COLUMN, 이름 변경은 RENAME COLUMN ... TO입니다. 컬럼 설명은 ALTER 문이 아니라 COMMENT ON COLUMN을 사용합니다.

연습용 테이블 준비

예제는 회원 기본정보를 담는 작은 테이블로 진행합니다. 운영 테이블에 바로 실행하지 말고 테스트 스키마에서 먼저 따라 해보세요.

CREATE TABLE MEMBER (
    MEMBER_ID   NUMBER,
    MEMBER_NAME VARCHAR2(50),
    REG_DATE    DATE
);

INSERT INTO MEMBER (MEMBER_ID, MEMBER_NAME, REG_DATE)
VALUES (1, '김하늘', SYSDATE);

COMMIT;

1. 컬럼 한 개 추가하기

이메일 주소를 저장할 컬럼을 추가합니다. 기본값을 지정하지 않았으므로 기존 행의 EMAIL 값은 NULL입니다.

ALTER TABLE MEMBER
ADD EMAIL VARCHAR2(100);

괄호를 사용한 아래 형태도 같은 뜻입니다. 두 문장 중 하나만 실행하세요. 같은 컬럼을 두 번 추가하면 오류가 납니다.

ALTER TABLE MEMBER
ADD (EMAIL VARCHAR2(100));

2. 여러 컬럼 한 번에 추가하기

전화번호와 사용 여부처럼 함께 필요한 컬럼은 한 문장으로 추가할 수 있습니다.

ALTER TABLE MEMBER
ADD (
    PHONE_NO VARCHAR2(20),
    USE_YN   CHAR(1) DEFAULT 'Y'
);

새 컬럼을 DEFAULT 'Y'와 함께 추가하면 기존 행에서도 이 컬럼의 값은 Y로 조회됩니다. 이후 INSERT에서 값을 생략할 때도 Y가 적용됩니다. 이미 존재하는 컬럼의 기본값만 MODIFY로 바꾸는 경우에는 기존 NULL 값이 자동으로 바뀌지 않으므로 두 상황을 구분하세요.

3. 컬럼 이름 변경하기

PHONE_NO를 좀 더 분명한 MOBILE_NO로 바꿔보겠습니다. 데이터는 그대로 있고 컬럼 이름만 변경됩니다.

ALTER TABLE MEMBER
RENAME COLUMN PHONE_NO TO MOBILE_NO;
실행 전 확인
컬럼명을 바꾸면 해당 이름을 사용하는 애플리케이션 SQL, 뷰, 프로시저, 함수와 리포트가 영향을 받을 수 있습니다. 데이터가 유지된다는 이유만으로 가벼운 변경은 아닙니다.

4. 컬럼 한 개 삭제하기

더 이상 사용하지 않는 컬럼은 DROP COLUMN로 삭제합니다.

ALTER TABLE MEMBER
DROP COLUMN MOBILE_NO;

컬럼과 그 안의 데이터가 함께 사라집니다. Oracle DDL은 일반적인 UPDATE처럼 ROLLBACK으로 간단히 되돌리는 작업이 아니므로 백업과 복구 방법을 먼저 준비해야 합니다.

5. 여러 컬럼 한 번에 삭제하기

ALTER TABLE MEMBER
DROP (EMAIL, USE_YN);

삭제할 컬럼이 제약조건이나 인덱스에 참여한다면 문장이 실패하거나 관련 객체에 영향을 줄 수 있습니다. 운영 환경에서는 한꺼번에 지우기보다 각 컬럼의 사용처를 먼저 확인하는 편이 안전합니다.

6. 테이블 설명 작성하기

테이블의 업무 의미는 데이터 사전에 COMMENT로 남길 수 있습니다.

COMMENT ON TABLE MEMBER
IS '회원 기본정보';

7. 컬럼 설명 작성·변경·삭제하기

COMMENT ON COLUMN MEMBER.MEMBER_ID
IS '회원 고유번호';

COMMENT ON COLUMN MEMBER.MEMBER_NAME
IS '회원명';

COMMENT ON COLUMN MEMBER.REG_DATE
IS '회원 등록일시';

설명을 바꾸고 싶다면 같은 문장을 새 설명으로 다시 실행합니다. COMMENT를 제거할 때는 빈 문자열을 지정합니다.

-- 설명 변경
COMMENT ON COLUMN MEMBER.MEMBER_NAME
IS '화면에 표시할 회원 이름';

-- 설명 삭제
COMMENT ON COLUMN MEMBER.MEMBER_NAME IS '';

변경 결과 확인하기

SQL Developer 등에서는 DESC MEMBER로 빠르게 볼 수 있습니다. 컬럼 속성과 설명을 함께 확인하려면 데이터 사전을 조회하는 편이 편합니다.

SELECT C.COLUMN_ID,
       C.COLUMN_NAME,
       C.DATA_TYPE,
       C.DATA_LENGTH,
       C.NULLABLE,
       M.COMMENTS
  FROM USER_TAB_COLUMNS C
  LEFT JOIN USER_COL_COMMENTS M
    ON M.TABLE_NAME = C.TABLE_NAME
   AND M.COLUMN_NAME = C.COLUMN_NAME
 WHERE C.TABLE_NAME = 'MEMBER'
 ORDER BY C.COLUMN_ID;
운영 환경 주의
삭제와 이름 변경 전에는 사용 SQL, 제약조건, 인덱스와 의존 객체를 확인하세요. 정확한 테이블명과 접속 스키마를 다시 보는 짧은 습관이 큰 실수를 막아줍니다.

한눈에 다시 보기

-- 추가
ALTER TABLE MEMBER ADD EMAIL VARCHAR2(100);

-- 이름 변경
ALTER TABLE MEMBER RENAME COLUMN EMAIL TO CONTACT_EMAIL;

-- 삭제
ALTER TABLE MEMBER DROP COLUMN CONTACT_EMAIL;

-- 설명
COMMENT ON COLUMN MEMBER.MEMBER_ID IS '회원 고유번호';

다음 편에서는 MODIFY를 이용해 컬럼 길이, 기본값, NULL 허용 여부를 바꾸는 방법을 정리합니다. 특히 길이를 줄이거나 NOT NULL을 적용하기 전에 무엇을 확인해야 하는지 예제로 살펴보겠습니다.

공식 문서

댓글 남기기