2 분 소요

UNIQUE 제약 조건은 SQL에서 필드 값의 고유성(중복 금지)을 보장하는 기능입니다. 중복된 값이 저장되지 않도록 제한하면서도 NULL은 허용한다는 점에서 PRIMARY KEY와 구별됩니다. 이 글에서는 UNIQUE 제약 조건의 문법, 특징, 사용 예제, 관리 방법까지 체계적으로 설명합니다.


1. UNIQUE 제약 조건이란?

  • 중복된 값 저장을 금지하는 제약 조건
  • 테이블 생성 시 또는 수정 시 설정 가능
  • 자동 인덱스 생성으로 검색 성능도 향상

2. UNIQUE 제약 조건 설정 방법

2.1. CREATE TABLE로 설정

기본 문법

CREATE TABLE 테이블명 (
    필드명 필드타입 UNIQUE,
    ...
);

제약 조건 이름 지정

CREATE TABLE 테이블명 (
    필드명 필드타입,
    ...
    CONSTRAINT 제약조건이름 UNIQUE (필드명)
);

예제

CREATE TABLE Test (
    ID INT UNIQUE,
    Name VARCHAR(30),
    ReserveDate DATE,
    RoomNum INT
);
CREATE TABLE Test (
    ID INT,
    Name VARCHAR(30),
    ReserveDate DATE,
    RoomNum INT,
    CONSTRAINT UniqueRoom UNIQUE (RoomNum)
);

2.2. ALTER TABLE로 설정

문법

-- 새 필드 추가와 동시에 UNIQUE 설정
ALTER TABLE 테이블명 ADD 필드명 필드타입 UNIQUE;

-- 기존 필드에 UNIQUE 설정
ALTER TABLE 테이블명 MODIFY COLUMN 필드명 필드타입 UNIQUE;

-- 제약 조건 이름 부여
ALTER TABLE 테이블명 ADD CONSTRAINT 제약이름 UNIQUE (필드명);

예제

ALTER TABLE Reservation
ADD CONSTRAINT UniqueRoom UNIQUE (RoomNum);

3. UNIQUE 제약 조건의 특징

✅ 중복 불가

INSERT INTO Reservation (RoomNum) VALUES (101);
INSERT INTO Reservation (RoomNum) VALUES (101); -- ❌ 오류 발생

✅ NULL 값은 허용

INSERT INTO Test (ID) VALUES (NULL);
INSERT INTO Test (ID) VALUES (NULL); -- ✅ 성공 (NULL은 고유값으로 간주됨)

✅ 자동 인덱스 생성

  • UNIQUE 설정 시, 해당 필드에는 자동으로 INDEX가 생성되어 검색 속도가 향상됩니다.

4. UNIQUE 제약 조건 삭제

문법

ALTER TABLE 테이블명 DROP INDEX 제약조건이름;

예제

ALTER TABLE Reservation DROP INDEX UniqueRoom;

⚠ 제약 조건을 제거하려면 제약 조건 이름을 반드시 알고 있어야 합니다.


5. 실전 예제

5.1. 필드에 UNIQUE 설정

CREATE TABLE Employee (
    EmployeeID INT UNIQUE,
    Name VARCHAR(50),
    Email VARCHAR(50) UNIQUE
);

✅ EmployeeID와 Email은 각각 중복 불가


5.2. 복합 필드에 UNIQUE 설정 (복합 키)

CREATE TABLE RoomBooking (
    RoomNum INT,
    ReserveDate DATE,
    CONSTRAINT UniqueBooking UNIQUE (RoomNum, ReserveDate)
);

✅ 같은 날짜에 같은 방은 한 번만 예약 가능


5.3. 기존 테이블에 UNIQUE 추가

ALTER TABLE Customer
ADD CONSTRAINT UniquePhone UNIQUE (PhoneNumber);

5.4. UNIQUE 제약 조건 제거

ALTER TABLE Customer DROP INDEX UniquePhone;

6. UNIQUE vs PRIMARY KEY 비교

항목 UNIQUE PRIMARY KEY
중복 여부 중복 불가 (단, NULL 허용) 중복 불가 + NULL도 허용 안 됨
NULL 허용 O X
설정 개수 여러 필드에 설정 가능 한 테이블당 1개만 가능
인덱스 자동 생성 자동 생성

7. 요약

  • UNIQUE 제약 조건은 중복 방지를 위한 필수 도구
  • NULL 값은 예외적으로 허용되어 여러 개 저장 가능
  • 자동 인덱스 생성으로 성능 향상
  • 복합 필드에도 적용 가능
  • 제약 조건 이름을 부여하면 관리와 삭제가 쉬움

질문 정리

1. UNIQUE 제약 조건이 설정된 필드에 NULL은 몇 개까지 저장되나요?

  • 여러 개 저장 가능합니다. NULL은 서로 다른 값으로 간주되기 때문입니다.

2. PRIMARY KEY와 UNIQUE의 차이는?

  • PRIMARY KEYNULL 불가 + 중복 불가
  • UNIQUENULL 허용 + 중복 불가

3. 하나의 테이블에 UNIQUE는 몇 개까지 설정 가능한가요?

  • 여러 필드에 설정 가능하며, 각 필드마다 별도의 UNIQUE 제약 조건을 부여할 수 있습니다.

4. UNIQUE 조건을 제거할 때 꼭 제약 조건 이름이 필요한가요?

  • 네. DROP INDEX 구문에서는 UNIQUE 제약 조건의 이름이 필요합니다.

5. 복합 키의 UNIQUE 조건은 어떻게 설정하나요?

CONSTRAINT 이름 UNIQUE (필드1, 필드2)
  • 두 필드의 조합이 중복되지 않아야 하는 경우 사용합니다.

카테고리:

업데이트:

댓글남기기