2 분 소요

PRIMARY KEY 제약 조건은 SQL에서 테이블의 각 레코드를 고유하게 식별하기 위해 사용되는 가장 중요한 제약 조건입니다. 이는 NOT NULLUNIQUE의 속성을 모두 포함하며, 데이터의 무결성을 보장하고 검색 성능을 향상시키는 데 필수적입니다.


1. PRIMARY KEY란?

특징 설명
고유성 중복된 값 저장 불가
NULL 불가 필수 입력, NULL 허용 안 됨
단일/복합 설정 하나의 필드 또는 여러 필드를 조합하여 설정 가능
테이블당 1개 하나의 테이블에는 하나의 PRIMARY KEY만 설정 가능
자동 인덱스 설정 시 자동으로 인덱스가 생성되어 검색 속도 향상

2. PRIMARY KEY 설정 방법

2.1. CREATE TABLE 시 설정

✅ 단일 필드 설정

CREATE TABLE Test (
    ID INT PRIMARY KEY,
    Name VARCHAR(30),
    ReserveDate DATE
);

✅ 제약 조건 이름 부여

CREATE TABLE Test (
    ID INT,
    Name VARCHAR(30),
    CONSTRAINT PK_Test PRIMARY KEY (ID)
);

✅ 복합 키 설정

CREATE TABLE RoomBooking (
    RoomNum INT,
    ReserveDate DATE,
    PRIMARY KEY (RoomNum, ReserveDate)
);

복합 키: 두 필드의 조합이 고유해야 함.


2.2. ALTER TABLE로 설정

✅ 기존 필드에 PRIMARY KEY 추가

ALTER TABLE Reservation
ADD CONSTRAINT PK_Reservation PRIMARY KEY (ID);

✅ 복합 키 추가

ALTER TABLE RoomBooking
ADD CONSTRAINT PK_RoomBooking PRIMARY KEY (RoomNum, ReserveDate);

✅ 새 필드 추가와 동시에 설정

ALTER TABLE Reservation
ADD ID INT PRIMARY KEY;

3. PRIMARY KEY 삭제

문법

ALTER TABLE 테이블명 DROP PRIMARY KEY;

예제

ALTER TABLE Reservation DROP PRIMARY KEY;

⚠ 반드시 한 테이블에 단 하나만 존재하므로 삭제 전에 데이터 무결성 여부를 검토하세요.


4. PRIMARY KEY 사용 시 주의사항

  • NULL 허용 안 됨: 반드시 값이 있어야 함
  • 중복 금지: 동일한 키 값은 입력 불가
INSERT INTO Test (ID) VALUES (1);
INSERT INTO Test (ID) VALUES (1); -- 오류 발생
  • 복합 키 사용 시: 조합된 모든 필드가 고유해야 함
  • 하나의 테이블에 하나만 설정 가능

5. 실전 예제

5.1. 고유 식별자 지정

CREATE TABLE Employee (
    EmployeeID INT PRIMARY KEY,
    Name VARCHAR(50),
    Department VARCHAR(50)
);

5.2. 예약 테이블 복합 키

CREATE TABLE Reservation (
    RoomNum INT,
    ReserveDate DATE,
    PRIMARY KEY (RoomNum, ReserveDate)
);

5.3. ALTER TABLE로 PRIMARY KEY 설정

ALTER TABLE Customer
ADD CONSTRAINT PK_Customer PRIMARY KEY (CustomerID);

5.4. PRIMARY KEY 삭제

ALTER TABLE Customer DROP PRIMARY KEY;

6. PRIMARY KEY vs UNIQUE 비교

항목 PRIMARY KEY UNIQUE
NULL 허용 여부 ❌ 허용 안 됨 ✅ 허용 가능
중복 허용 여부 ❌ 중복 불가 ❌ 중복 불가
테이블당 설정 수 하나만 가능 여러 필드에 설정 가능
자동 인덱스 생성 ✅ 생성됨 ✅ 생성됨

7. 요약

  • PRIMARY KEY는 데이터베이스에서 레코드 식별자 역할을 하며, 고유성과 필수 입력을 동시에 보장합니다.
  • 단일 필드 또는 복합 필드로 설정 가능하며, 검색 성능 향상을 위해 자동 인덱스가 생성됩니다.
  • UNIQUE와의 차이NULL 허용 여부설정 가능 개수에서 드러납니다.
  • 무결성 유지와 성능 향상을 동시에 고려할 때 필수 설정 요소입니다.

질문 정리

1. PRIMARY KEY는 꼭 필요할까요?

  • 필수는 아니지만, 데이터 무결성과 검색 성능을 위해 반드시 설정하는 것이 좋습니다.

2. 복합 키는 언제 사용하나요?

  • 두 필드 이상의 조합으로 유일성을 보장해야 할 때 (예: 같은 방에 같은 날짜에 두 번 예약 금지)

3. PRIMARY KEY가 있는 필드에 NULL을 입력하면?

  • 오류 발생. 반드시 값이 존재해야 합니다.

4. UNIQUE와 PRIMARY KEY를 동시에 설정할 수 있나요?

  • 가능합니다. 단, 서로 다른 필드에 설정해야 합니다.

5. PRIMARY KEY를 변경하려면?

  1. 기존 키를 삭제
  2. 새로운 필드에 PRIMARY KEY 설정

카테고리:

업데이트:

댓글남기기