Backend/MySQL

SQL - Unique

개발자의 첫 걸음 2025. 8. 27. 10:00

안녕하세요 오늘은 SQL의 Unique에 대해 알아볼게요.

 

 

MySQL의 제약조건 Unique에 설명 

 

Unique는 특정 열의 값이 테이블 내에 중복되지 않도록 보장시킴으로

 

두 행이 같은 값을 가질 수 없어요.

 

Null은 예외적으로 허용 가능해요.

 

 

Unique 사용 예시

 

1. 열 수준 (Column - level)

CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(100) UNIQUE,  -- UNIQUE 열 제약
    email VARCHAR(255)
);

위 예제로 username열이 Unique 설정으로 동일한 username을 가질 수 없고

 

email은 아무 제약이 없다는 걸 확인할 수 있어요.

 

 

2. 테이블 수준 (Table - level)

CREATE TABLE employees (
    id INT PRIMARY KEY,
    first_name VARCHAR(100),
    last_name VARCHAR(100),
    UNIQUE (first_name, last_name)  -- 복합 UNIQUE 제약
);

칼럼은 아무런 제약이 없지만

 

name 두 칼럼들의 Unique 설정으로 조합의 유일함을 설정했어요.

 

 

3. CONSTRAINT 이름 붙임

CREATE TABLE customers (
    id INT PRIMARY KEY,
    email VARCHAR(255),
    CONSTRAINT unique_email UNIQUE (email)
);

Unique 제약에 이름을 붙임으로 에러 메시지나 관리에 도움 줄 수 있어요.

 

 

4. CREATE UNIQUE INDEX 문법 

CREATE UNIQUE INDEX idx_username_email
ON users (username, email);

username과 email 조합이 유일하고, 복합 인덱스와 중복이 불가능해요.

 

 

 

그 외 여러 가지 Unique 예시들은 간단하게 표로 정리해 봤어요.

열 수준 username VARCHAR(100) UNIQUE 단일 열 중복 방지
테이블 수준 UNIQUE (col1, col2) 복합 열 중복 방지
제약 이름 지정 CONSTRAINT u_email UNIQUE(email) 제약 조건 이름 부여
인덱스 CREATE UNIQUE INDEX idx ON tbl(col) 유니크 인덱스 생성
인덱스 옵션 USING BTREE, VISIBLE, COMMENT 등 인덱스 세부 제어
ALTER 추가 ALTER TABLE ... ADD UNIQUE ... 기존 테이블에 제약 추가

 

 

 

 

여기까지 SQL의 Unique에 대해 알아봤는데요.

 

Unique를 포스팅한 이유 중 하나는 SQLD 시험에 Unique 관련 문제가 많이 보여서 에요.

 

혹시나 SQL과 SQLD 시험공부 중  Unique의 궁금증이 조금이라도 풀렸으면 좋겠어요.

'Backend > MySQL' 카테고리의 다른 글

SQL - 구성 요소  (3) 2025.08.24
SQL - Subquery  (5) 2025.08.10
SQL - Select  (6) 2025.08.09
SQL 제약조건  (8) 2025.08.07
SQL의 무결성  (4) 2025.08.05