본문 바로가기
Database/Oracle

[ORACLE] ALTER() 예제 중심 설명 : 개발자가 꼭 알아야 할 핵심 내용

by Papa Martino V 2025. 6. 10.
728x90

오라클 ALTER() 예제 중심 설명: 개발자가 꼭 알아야 할 핵심 내용
[Oracle] ALTER

 

 

이 글에서는 Oracle Database에서 자주 사용되는 ALTER 문에 대해 심도 있게 설명합니다. 다양한 실무 예제를 통해 개발자가 실제 업무에 적용할 수 있도록 구성하였습니다.

1. ALTER 문이란?

ALTER 문은 데이터베이스 오브젝트의 구조를 변경할 때 사용됩니다. 주로 테이블, 컬럼, 제약조건 등을 수정할 때 활용되며, CREATEDROP 사이의 유연한 구조 변경을 위한 필수 문법입니다.

2. 컬럼 추가 (ADD)

기존 테이블에 새로운 컬럼을 추가하는 기본 구문입니다.

ALTER TABLE employees ADD (email VARCHAR2(100));

컬럼 여러 개를 동시에 추가하려면 괄호 안에 쉼표로 구분하여 작성합니다.

ALTER TABLE employees ADD (
  phone_number VARCHAR2(20),
  hire_date DATE
);

3. 컬럼 수정 (MODIFY)

기존 컬럼의 데이터 타입, 길이, 제약조건 등을 변경할 수 있습니다.

ALTER TABLE employees MODIFY (email VARCHAR2(150));

NOT NULL 제약을 추가할 수도 있습니다.

ALTER TABLE employees MODIFY (hire_date DATE NOT NULL);

4. 컬럼 삭제 (DROP COLUMN)

필요 없는 컬럼을 제거할 때 사용합니다.

ALTER TABLE employees DROP COLUMN phone_number;

5. 컬럼 이름 변경 (RENAME COLUMN)

Oracle 12c 이상에서는 컬럼명을 직접 변경할 수 있습니다.

ALTER TABLE employees RENAME COLUMN email TO email_address;

6. 테이블 이름 변경 (RENAME TO)

ALTER TABLE employees RENAME TO staff;

7. 제약조건 추가 및 제거

기본 키, 외래 키, 유니크 제약조건 등을 ALTER 문으로 추가하거나 제거할 수 있습니다.

기본 키 추가

ALTER TABLE employees ADD CONSTRAINT pk_emp_id PRIMARY KEY (employee_id);

외래 키 추가

ALTER TABLE employees ADD CONSTRAINT fk_dept_id FOREIGN KEY (department_id)
REFERENCES departments(department_id);

제약조건 삭제

ALTER TABLE employees DROP CONSTRAINT fk_dept_id;

8. 파티션 추가 및 병합

파티셔닝된 테이블의 경우, 파티션 추가도 ALTER 문으로 수행합니다.

ALTER TABLE sales ADD PARTITION sales_q4 VALUES LESS THAN (TO_DATE('2025-10-01', 'YYYY-MM-DD'));

파티션 병합:

ALTER TABLE sales MERGE PARTITIONS sales_q1, sales_q2 INTO PARTITION sales_h1;

9. 인덱스 비활성화 및 재구성

ALTER INDEX idx_emp_email UNUSABLE;
ALTER INDEX idx_emp_email REBUILD;

10. 실전 예제: 전체 스키마 변경 시나리오

-- 1. 테이블명 변경
ALTER TABLE old_employees RENAME TO employees;

-- 2. 컬럼명 변경
ALTER TABLE employees RENAME COLUMN name TO full_name;

-- 3. 새로운 컬럼 추가
ALTER TABLE employees ADD (email VARCHAR2(100));

-- 4. 기본 키 추가
ALTER TABLE employees ADD CONSTRAINT pk_emp PRIMARY KEY (emp_id);

-- 5. 외래 키 추가
ALTER TABLE employees ADD CONSTRAINT fk_dept FOREIGN KEY (dept_id) REFERENCES departments(dept_id);

-- 6. 컬럼 타입 수정
ALTER TABLE employees MODIFY (full_name VARCHAR2(200));

11. ALTER 관련 주의사항

  • 대규모 테이블에 ALTER 수행 시 퍼포먼스에 영향이 있을 수 있음
  • 제약조건 추가 전에 NULL 여부 확인 필수
  • RENAME COLUMN 등 일부 기능은 Oracle 12c 이상부터 지원
  • 변경 전 백업 권장 (특히 제약조건 및 파티션 구조 변경 시)

출처 및 참고자료

728x90