SQL Primary Key
SQL PRIMARY KEY: 기본 키
SQL PRIMARY KEY는 테이블에서 각 행을 고유하게 식별하는 열(또는 열의 조합)에 적용되는 제약 조건입니다. 기본 키는 테이블 내에서 중복된 값을 허용하지 않으며, NULL 값도 가질 수 없습니다. 즉, 각 행을 유일하게 식별할 수 있는 값이어야 합니다.
1. PRIMARY KEY의 특징
- 고유성: 기본 키가 설정된 열은 중복된 값을 가질 수 없습니다.
- NULL 불허: 기본 키는 NULL 값을 허용하지 않습니다.
- 단일 테이블에 하나만 설정 가능: 하나의 테이블에는 오직 하나의 PRIMARY KEY만 설정할 수 있습니다.
- 단일 열 또는 여러 열로 설정 가능: 기본 키는 단일 열로 설정할 수 있으며, 여러 열의 조합으로도 설정할 수 있습니다 (이를 복합 기본 키라고 함).
2. PRIMARY KEY 기본 문법
2.1 테이블 생성 시 PRIMARY KEY 설정
CREATE TABLE 테이블_이름 (
열_이름 데이터_타입 PRIMARY KEY
);
- 열_이름: 기본 키로 사용할 열의 이름.
- 데이터_타입: 해당 열에 저장될 데이터 유형.
2.2 복합 기본 키 설정
CREATE TABLE 테이블_이름 (
열_이름1 데이터_타입,
열_이름2 데이터_타입,
PRIMARY KEY (열_이름1, 열_이름2)
);
- 열_이름1, 열_이름2: 복합 기본 키를 구성하는 여러 열.
3. PRIMARY KEY 예제
3.1 단일 열을 기본 키로 설정
예제: employees
테이블에서 employee_id
를 기본 키로 설정
CREATE TABLE employees (
employee_id INT PRIMARY KEY, -- 기본 키 설정
name VARCHAR(100),
department VARCHAR(50)
);
이 명령은 employees 테이블에서 employee_id를 기본 키로 설정하여, 각 행이 고유한 employee_id를 가지도록 합니다. employee_id는 중복될 수 없고, NULL 값도 가질 수 없습니다.
3.2 복합 기본 키 설정
복합 기본 키는 여러 열을 조합하여 고유한 값으로 설정하는 방식입니다.
예제: order_details
테이블에서 order_id
와 product_id
의 조합을 기본 키로 설정
CREATE TABLE order_details (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id) -- 복합 기본 키 설정
);
이 명령은 order_id와 product_id의 조합을 기본 키로 설정하여, 동일한 주문 내에서 각 상품이 고유하게 식별되도록 합니다. order_id 또는 product_id만으로는 기본 키가 되지 않지만, 두 값의 조합이 고유합니다.
4. PRIMARY KEY 추가 및 삭제
4.1 기존 테이블에 PRIMARY KEY 추가 (ALTER TABLE)
기존 테이블에 PRIMARY KEY를 추가할 때는 ALTER TABLE 명령을 사용합니다.
문법
ALTER TABLE 테이블_이름
ADD PRIMARY KEY (열_이름);
예제: employees
테이블에서 employee_id
를 기본 키로 추가
ALTER TABLE employees
ADD PRIMARY KEY (employee_id);
이 명령은 employees 테이블에 employee_id를 기본 키로 추가합니다.
4.2 PRIMARY KEY 제거 (ALTER TABLE)
기본 키를 제거할 때는 ALTER TABLE 명령으로 DROP PRIMARY KEY를 사용합니다.
문법
ALTER TABLE 테이블_이름
DROP PRIMARY KEY;
예제: employees
테이블에서 기본 키 제거
ALTER TABLE employees
DROP PRIMARY KEY;
이 명령은 employees 테이블에서 기본 키를 제거합니다.
5. PRIMARY KEY와 UNIQUE의 차이
- PRIMARY KEY는 NULL 값을 허용하지 않으며, 테이블에서 단 하나만 설정할 수 있습니다.
- UNIQUE는 NULL 값을 허용할 수 있으며, 하나의 테이블에 여러 개의 UNIQUE 제약 조건을 설정할 수 있습니다.
예제: PRIMARY KEY와 UNIQUE 차이
CREATE TABLE employees (
employee_id INT PRIMARY KEY, -- PRIMARY KEY, 중복 불가, NULL 불허
email VARCHAR(100) UNIQUE -- UNIQUE, 중복 불가, NULL 허용
);
이 예제에서 employee_id는 PRIMARY KEY로 설정되어 NULL 값을 허용하지 않으며 각 행마다 고유해야 합니다. 반면, email은 UNIQUE 제약 조건이 적용되어 중복된 값은 허용되지 않지만 NULL 값은 허용될 수 있습니다.
6. AUTO_INCREMENT와 PRIMARY KEY
AUTO_INCREMENT는 주로 PRIMARY KEY와 함께 사용되며, 테이블에 행이 추가될 때마다 자동으로 숫자를 증가시켜 고유한 값을 생성합니다. 주로 기본 키 열에 사용됩니다.
6.1 AUTO_INCREMENT 예제
CREATE TABLE employees (
employee_id INT AUTO_INCREMENT PRIMARY KEY, -- 기본 키와 AUTO_INCREMENT 설정
name VARCHAR(100),
department VARCHAR(50)
);
이 예제는 employee_id 열이 AUTO_INCREMENT로 설정되어, 새로운 행이 추가될 때마다 자동으로 증가하는 고유한 값을 가집니다.
7. 실전 예제
예제 1: 직원 테이블 생성 시 PRIMARY KEY 설정
CREATE TABLE employees (
employee_id INT PRIMARY KEY, -- 기본 키 설정
name VARCHAR(100),
email VARCHAR(100) UNIQUE -- UNIQUE 제약 조건 추가
);
이 예제는 employee_id를 기본 키로 설정하고, email에 중복을 허용하지 않는 UNIQUE 제약 조건을 추가합니다.
예제 2: 주문 상세 테이블에서 복합 기본 키 설정
CREATE TABLE order_details (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id) -- 복합 기본 키 설정
);
이 예제는 order_id와 product_id의 조합을 기본 키로 설정하여, 동일한 주문 내에서 각 상품이 고유하게 식별될 수 있도록 합니다.
8. 요약
- PRIMARY KEY는 테이블에서 각 행을 고유하게 식별하는 데 사용되며, NULL 값을 허용하지 않고 중복이 불가능합니다.
- 테이블 생성 시 PRIMARY KEY를 지정할 수 있으며, ALTER TABLE을 통해 나중에 추가하거나 제거할 수 있습니다.
- 복합 기본 키는 여러 열을 조합하여 고유성을 보장할 수 있습니다.
- AUTO_INCREMENT는 주로 기본 키 열에서 자동으로 증가하는 고유 값을 생성하는 데 사용됩니다.
- PRIMARY KEY는 UNIQUE와 유사하지만, NULL 값을 허용하지 않으며 테이블당 하나만 설정할 수 있습니다.
PRIMARY KEY는 데이터베이스의 무결성을 보장하는 중요한 도구로, 데이터의 고유성과 유효성을 유지하는 데 필수적입니다.