피드로 돌아가기
CA 40 – Alter Tables
Dev.toDev.to
Database

ALTER TABLE을 이용해 테이블 재생성 없이 제약조건, 기본값, 컬럼을 추가하거나 수정하는 방식

CA 40 – Alter Tables

Mohammed Azim J2026년 3월 29일1beginner

Context

테이블을 생성한 후 구조를 변경해야 할 때는 기존에 테이블을 다시 만드는 방식을 사용했다. 이미 데이터가 존재하는 프로덕션 환경에서는 테이블 재생성이 복잡하고 위험한 작업이다.

Technical Solution

  • NOT NULL 제약조건 추가: ALTER TABLE customers ALTER COLUMN email SET NOT NULL으로 email 컬럼을 필수 필드로 변경
  • UNIQUE 제약조건 추가: ALTER TABLE users ADD CONSTRAINT unique_username UNIQUE (username)으로 username 중복 방지
  • CHECK 제약조건 추가: ALTER TABLE products ADD CONSTRAINT price_check CHECK (price > 0)으로 price 값 범위 검증
  • DEFAULT 값 설정: ALTER TABLE orders ALTER COLUMN status SET DEFAULT 'pending'으로 값 미입력 시 자동으로 'pending' 할당
  • 새 컬럼 추가 및 제약조건: ALTER TABLE employees ADD COLUMN salary INT NOT NULL과 CHECK (salary > 10000)으로 급여 컬럼을 필수이면서 최솟값 조건 적용
  • 외래키 연쇄 삭제 설정: 기존 외래키 제약조건을 제거한 후 ON DELETE CASCADE를 추가해 부서 삭제 시 해당 직원 자동 삭제
  • 제약조건 제거: ALTER TABLE accounts DROP CONSTRAINT accounts_balance_check로 기존 제약조건 삭제
  • 복합 UNIQUE 제약조건: ALTER TABLE payments ADD CONSTRAINT unique_payment UNIQUE (user_id, transaction_id)으로 사용자당 거래 중복 방지

Key Takeaway

ALTER TABLE은 기존 데이터를 유지하면서 테이블 구조를 수정할 수 있으므로 프로덕션 환경에서 데이터 손실 없이 스키마 변경을 수행할 수 있다.


운영 중인 데이터베이스에서 제약조건이나 컬럼을 추가해야 할 때 ALTER TABLE 명령어를 사용하면 기존 데이터를 보존하면서 테이블 구조를 직접 수정할 수 있다.

원문 읽기