SQL에서 Primary Key와 Unique는 모두 "중복을 허용하지 않는다"는 공통점을 갖고 있습니다.
하지만 두 속성은 목적과 제약 조건에서 미세한 차이를 보입니다.
Primary Key
- 테이블에서 특정 row를 유일하게 식별하기 위한 컬럼
- 특징
- 테이블당 단 하나만 존재 가능
- NULL 허용 불가
- 다른 테이블에서 Foreign Key로 참조될 수 있음
- NULL이 허용되지 않는 이유
- SQL에서 NULL = NULL 은 True가 아님 → 특정 row를 정확히 찾을 수 없음
- 조인(Join) 시에도 ON colA = colB 조건에 NULL이 들어가면 매칭되지 않음
예시:
CREATE TABLE member (
id INT PRIMARY KEY,
email VARCHAR(100) NOT NULL
);
Unique
- 각 row마다 값이 서로 달라야 하는 제약 조건
- 특징
- 한 테이블에 여러 개 지정 가능
- NULL 허용 (각 NULL은 고유하다고 인정됨)
예시:
CREATE TABLE member (
id INT PRIMARY KEY,
email VARCHAR(100) UNIQUE,
phone VARCHAR(20) UNIQUE
);
여기서는 email, phone 모두 중복 불가지만, NULL은 허용됩니다.
두 속성의 핵심 차이

정리
- Primary Key : 테이블의 "대표 키", row 식별자, NULL 불가, 하나만 지정
- Unique : 중복 방지 장치, 여러 개 지정 가능, NULL 허용
- 둘은 비슷하지만, 목적과 NULL 허용 여부에서 차이가 있습니다.
👉 실무에서는 식별자 역할은 Primary Key,
**중복 방지(이메일, 전화번호 등)**는 Unique로 나눠서 사용하는 경우가 많습니다!
'컴퓨터 과학 > 데이터 베이스' 카테고리의 다른 글
| MySQL 외래키(Foreign Key)와 ON DELETE 제약조건 (0) | 2025.08.19 |
|---|---|
| MySQL에서 컬럼 구조 변경하기 (ALTER TABLE 활용) (0) | 2025.08.19 |
| MySQL에서 행의 생성/갱신 시각 관리하기 (0) | 2025.08.19 |
| MySQL 생성(Create), 수정(Update/Alter), 삭제(Delete/Drop) 문법 정리 (0) | 2025.08.19 |
| MySQL에서 백틱(`), 작은따옴표(’), 큰따옴표(”)의 용도 정리 (2) | 2025.08.18 |