728x90

이 글에서는 Oracle Database에서 자주 사용되는 ALTER 문에 대해 심도 있게 설명합니다. 다양한 실무 예제를 통해 개발자가 실제 업무에 적용할 수 있도록 구성하였습니다.
1. ALTER 문이란?
ALTER 문은 데이터베이스 오브젝트의 구조를 변경할 때 사용됩니다. 주로 테이블, 컬럼, 제약조건 등을 수정할 때 활용되며, CREATE와 DROP 사이의 유연한 구조 변경을 위한 필수 문법입니다.
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
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] RENAME() 사용법과 주의 사항 총 정리 (0) | 2025.06.12 |
|---|---|
| [ORACLE] TRUNCATE() 완전 정복 : DELETE와의 차이점부터 실전 예제까지 (0) | 2025.06.11 |
| [ORACLE] DROP() 완벽 정리 : 테이블·뷰·사용자 삭제 실전 예제 포함 (0) | 2025.06.10 |
| [ORACLE] CREATE() TABLE, VIEW, USER 생성 실무 예제 총정리 (0) | 2025.06.09 |
| [ORACLE] COMMENT() 구문으로 테이블과 컬럼 설명 문서화하기 (0) | 2025.06.09 |