본문 바로가기
Database

오라클 ALTER TABLE로 테이블 수정하기

by 굿센스굿 2024. 12. 3.
반응형


데이터베이스 설계는 초기 단계에서 신중하게 계획되지만, 운영 환경에서 요구사항 변화에 따라 테이블 구조를 수정해야 할 때가 많습니다. 이때 ALTER TABLE 명령어를 사용하여 테이블의 컬럼, 제약 조건, 인덱스 등을 유연하게 관리할 수 있습니다. 이번 포스팅에서는 ALTER TABLE의 주요 기능과 사용법, 그리고 실무 예제를 통해 테이블 구조를 효율적으로 수정하는 방법을 알아보겠습니다.


1. ALTER TABLE의 기본 개념

ALTER TABLE 명령어는 기존 테이블의 구조를 수정하는 데 사용됩니다. 주요 기능은 다음과 같습니다:

  • 컬럼 추가, 삭제, 수정
  • 제약 조건 추가 및 제거
  • 테이블 이름 변경
  • 테이블 데이터 타입 변경
  • 기타 테이블 속성 변경

기본 문법:

ALTER TABLE table_name
action;

여기서 action에는 테이블 구조를 수정하기 위한 다양한 작업이 포함됩니다.


2. ALTER TABLE의 주요 작업

1) 컬럼 추가하기 (ADD COLUMN)
새로운 컬럼을 추가할 때 사용합니다.

ALTER TABLE employees
ADD COLUMN hire_date DATE;

이 쿼리는 employees 테이블에 hire_date라는 새로운 컬럼을 추가합니다.

2) 컬럼 삭제하기 (DROP COLUMN)
더 이상 필요하지 않은 컬럼을 삭제합니다.

ALTER TABLE employees
DROP COLUMN middle_name;

위 쿼리는 employees 테이블에서 middle_name 컬럼을 삭제합니다.

3) 컬럼 이름 변경하기 (RENAME COLUMN)
컬럼 이름을 변경할 수 있습니다.

ALTER TABLE employees
RENAME COLUMN birth_date TO date_of_birth;

birth_date 컬럼 이름을 date_of_birth로 변경합니다.

4) 컬럼 데이터 타입 변경하기 (MODIFY 또는 ALTER COLUMN)
컬럼의 데이터 타입을 변경합니다.

ALTER TABLE employees
MODIFY COLUMN phone_number VARCHAR(15);

phone_number 컬럼의 데이터 타입을 VARCHAR(15)로 변경합니다.

5) 테이블 이름 변경하기 (RENAME TO)
테이블 이름 자체를 변경할 수도 있습니다.

ALTER TABLE employees
RENAME TO staff;

employees 테이블의 이름을 staff로 변경합니다.


3. ALTER TABLE 실무 예제

예제 1: 컬럼 추가 및 데이터 타입 지정
직원 테이블에 이메일 주소 컬럼을 추가하고, 데이터 타입을 지정합니다.

ALTER TABLE employees
ADD COLUMN email VARCHAR(255);

이 쿼리는 employees 테이블에 최대 255자의 이메일 주소를 저장할 수 있는 email 컬럼을 추가합니다.

예제 2: 제약 조건 추가
새로운 컬럼에 고유 제약 조건을 설정합니다.

ALTER TABLE employees
ADD CONSTRAINT unique_email UNIQUE (email);

이 쿼리는 email 컬럼이 중복되지 않도록 고유 제약 조건을 추가합니다.

예제 3: 컬럼 삭제
기존에 필요했던 nickname 컬럼을 삭제합니다.

ALTER TABLE employees
DROP COLUMN nickname;

employees 테이블에서 더 이상 사용하지 않는 nickname 컬럼을 제거합니다.

예제 4: 기본값 추가
컬럼에 기본값을 설정하여, 데이터 입력 시 값이 없을 경우 자동으로 할당되도록 설정합니다.

ALTER TABLE employees
ALTER COLUMN job_title SET DEFAULT 'Staff';

job_title 컬럼에 기본값으로 'Staff'를 설정합니다.

예제 5: 외래 키 추가
다른 테이블과의 관계를 설정하기 위해 외래 키 제약 조건을 추가합니다.

ALTER TABLE orders
ADD CONSTRAINT fk_customer_id
FOREIGN KEY (customer_id) REFERENCES customers(customer_id);

orders 테이블의 customer_id 컬럼을 customers 테이블의 customer_id와 연결합니다.


4. ALTER TABLE 사용 시 주의사항

  1. 컬럼 삭제는 신중히
    컬럼 삭제(DROP COLUMN)는 데이터를 영구적으로 제거하므로, 반드시 백업을 확인한 후 수행해야 합니다.
  2. 인덱스와 제약 조건 영향
    컬럼을 수정하거나 삭제할 때 해당 컬럼과 관련된 인덱스 및 제약 조건이 영향을 받을 수 있으므로, 사전 검토가 필요합니다.
  3. 테이블 크기에 따른 성능 문제
    대규모 테이블에서 ALTER TABLE 명령어를 실행하면 테이블 잠금이나 성능 저하가 발생할 수 있습니다. 서비스 영향이 적은 시간대에 수행하는 것이 좋습니다.
  4. 데이터 무결성 보장
    제약 조건 추가 및 변경 시 데이터 무결성이 깨지지 않도록 기존 데이터를 검토해야 합니다.

5. 결론

ALTER TABLE은 데이터베이스 설계 및 운영에서 매우 중요한 명령어입니다. 요구사항에 따라 테이블 구조를 유연하게 변경하고, 데이터의 유효성을 유지하며, 효율적으로 관리하는 데 도움을 줍니다. 실무에서 자주 발생하는 상황에 맞춰 ALTER TABLE 명령어를 적극 활용해 보세요!

반응형