SQL PRIMARY KEY 제약 조건 설정, 특징, 실전 예제까지
PRIMARY KEY 제약 조건은 SQL에서 테이블의 각 레코드를 고유하게 식별하기 위해 사용되는 가장 중요한 제약 조건입니다. 이는 NOT NULL과 UNIQUE의 속성을 모두 포함하며, 데이터의 무결성을 보장하고 검색 성능을 향상시키는 데 필수적입니다.
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를 변경하려면?
- 기존 키를 삭제
- 새로운 필드에 PRIMARY KEY 설정
댓글남기기