본문 바로가기

SQL & 데이터베이스/데이터 무결성 & 트랜잭션

[SQL] PRIMARY KEY vs UNIQUE KEY 차이점

[SQL] PRIMARY KEY vs UNIQUE KEY 차이점

1. PRIMARY KEY와 UNIQUE KEY란?

데이터베이스에서 PRIMARY KEY(기본 키)UNIQUE KEY(고유 키)는 테이블의 데이터 무결성을 유지하는 데 사용됩니다.

두 키 모두 **중복을 허용하지 않지만, 차이점이 있습니다.**


2. PRIMARY KEY vs UNIQUE KEY 비교

특징PRIMARY KEYUNIQUE KEY
중복 허용 여부❌ 중복 불가능❌ 중복 불가능
NULL 허용 여부❌ NULL 값 불가능✅ NULL 값 가능
테이블당 개수1개만 가능여러 개 가능
인덱스자동으로 클러스터형 인덱스 생성자동으로 비클러스터형 인덱스 생성
사용 목적각 행을 고유하게 식별중복 방지 및 데이터 무결성 보장

3. PRIMARY KEY 예제

✅ PRIMARY KEY 사용 예제


CREATE TABLE employees (
    employee_id NUMBER PRIMARY KEY,
    name VARCHAR2(100),
    department VARCHAR2(50)
);
📌 설명:
  • employee_id가 PRIMARY KEY이므로 중복된 값이 입력될 수 없음
  • NULL 값을 허용하지 않음

✅ PRIMARY KEY 제약 조건 추가


ALTER TABLE employees ADD CONSTRAINT emp_pk PRIMARY KEY (employee_id);
📌 실행 결과:

Table EMPLOYEES altered.

4. UNIQUE KEY 예제

✅ UNIQUE KEY 사용 예제


CREATE TABLE users (
    user_id NUMBER PRIMARY KEY,
    email VARCHAR2(255) UNIQUE,
    username VARCHAR2(100) UNIQUE
);
📌 설명:
  • emailusername은 UNIQUE KEY이므로 **중복값을 허용하지 않음**
  • 하지만, **NULL 값은 허용**될 수 있음 (예: 이메일이 없는 경우)

✅ UNIQUE KEY 제약 조건 추가


ALTER TABLE users ADD CONSTRAINT email_uk UNIQUE (email);
📌 실행 결과:

Table USERS altered.

5. PRIMARY KEY vs UNIQUE KEY 사용 시 고려할 점

  • ✔ **각 행을 고유하게 식별해야 한다면** → PRIMARY KEY 사용
  • ✔ **중복을 방지해야 하지만 NULL을 허용해야 한다면** → UNIQUE KEY 사용
  • ✔ **하나의 테이블에 여러 개의 UNIQUE KEY를 사용할 수 있음**

🔍 결론

  • ✔ PRIMARY KEY는 **NULL을 허용하지 않으며, 테이블당 하나만 존재 가능**
  • ✔ UNIQUE KEY는 **NULL을 허용하며, 여러 개 설정 가능**
  • ✔ 데이터 무결성을 유지하려면 **두 키를 적절히 활용해야 함**

📖 다른 SQL 개념도 함께 확인하세요!

👉 SQL 테이블 설계 가이드 보러 가기