[SQL] Primary Key와 Unique Key의 차이점

리본24·2024년 9월 1일

database

목록 보기
3/3
post-thumbnail

기본키와 유니크키의 차이점

이 둘의 차이점을 우리는 다들 알고는 있다 피부로는 그런데 막상 질문이나 문제를 접했거나 누군가가 물어봤을 때 명확하게 대답하기 쉽지 않을 수 있다고 생각한다. 사실 내가 그랬고 SQLD 자격증을 공부하면서 문제로 나왔을 때 보기를 보고 잘 풀었지만 블로그를 통해서 정리 한번은 하고 넘어가고 싶어서 기록하게 되었다.


예시코드

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,  -- Primary Key
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Department VARCHAR(50),
    Email VARCHAR(100) UNIQUE    -- Unique Key
);

예시에서 EmployeeID는 '기본키(PK)'이고, Email은 '유니크 키'다.

유니크 키는 위 예시에서는 이메일이다. 이메일은 중복이 있어서는 안된다. 말 그대로 유니크, 고유한 값을 가져야 한다.

그리고 간단하게 생각하면 기본키는 해당 테이블의 기준이되는 값이라고 생각한다. 그래서 실제로 클러스터드 인덱스로 보통 사용된다. 학번, 사번 같은 경우가 예이다. 마찬가지로 기본키도 유니크한 값을 가져야 한다고 생각이 될 것이다. 그리고 모든 사원들은 반드시 사번을 가진다. 즉 기본키는 NULL값을 허용하지 않는다.


정리

정리하자면 둘의 차이는 다음과 같이 정리할 수 있다.

기본키(Primary Key)

  • Unique
  • Not NULL
  • Single Primary Key: 1개의 테이블에는 하나의 기본키만 설정이 가능하다. 여기서 '하나'는 하나의 필드를 의미하지 않는다. 복합키같은 경우도 하나의 PK인 것이다! (복합키는 1개 이상의 필드도 PK로 설정되는 거 아닌가? 하면서 헷갈렸음. 복합키를 PK로 설정한 경우 그 묶음을 하나의 PK로 생각하면 됨.)

유니크 키(Unique Key)

  • Unique
  • Null 허용
  • Multiple Unique Keys: 테이블에는 기본키를 제외하고 유니크한 값을 가지는 유니크 키를 1개이상 지정할 수 있다.
profile
기록하고 소화해보자! 소화가 안되거나 까먹으면 다시 꺼내서 보자! 오늘의 나는 어제의 나보다 강하다!

0개의 댓글