코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

SQL Primary Key

SQL PRIMARY KEY: 기본 키

SQL PRIMARY KEY는 테이블에서 각 행을 고유하게 식별하는 열(또는 열의 조합)에 적용되는 제약 조건입니다. 기본 키는 테이블 내에서 중복된 값을 허용하지 않으며, NULL 값도 가질 수 없습니다. 즉, 각 행을 유일하게 식별할 수 있는 값이어야 합니다.


1. PRIMARY KEY의 특징

  1. 고유성: 기본 키가 설정된 열은 중복된 값을 가질 수 없습니다.
  2. NULL 불허: 기본 키는 NULL 값을 허용하지 않습니다.
  3. 단일 테이블에 하나만 설정 가능: 하나의 테이블에는 오직 하나의 PRIMARY KEY만 설정할 수 있습니다.
  4. 단일 열 또는 여러 열로 설정 가능: 기본 키는 단일 열로 설정할 수 있으며, 여러 열의 조합으로도 설정할 수 있습니다 (이를 복합 기본 키라고 함).

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_idproduct_id의 조합을 기본 키로 설정

CREATE TABLE order_details (
    order_id INT,
    product_id INT,
    quantity INT,
    PRIMARY KEY (order_id, product_id)  -- 복합 기본 키 설정
);

이 명령은 order_idproduct_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 KEYNULL 값을 허용하지 않으며, 테이블에서 단 하나만 설정할 수 있습니다.
  • UNIQUENULL 값을 허용할 수 있으며, 하나의 테이블에 여러 개의 UNIQUE 제약 조건을 설정할 수 있습니다.

예제: PRIMARY KEY와 UNIQUE 차이

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,  -- PRIMARY KEY, 중복 불가, NULL 불허
    email VARCHAR(100) UNIQUE     -- UNIQUE, 중복 불가, NULL 허용
);

이 예제에서 employee_idPRIMARY KEY로 설정되어 NULL 값을 허용하지 않으며 각 행마다 고유해야 합니다. 반면, emailUNIQUE 제약 조건이 적용되어 중복된 값은 허용되지 않지만 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_idproduct_id의 조합을 기본 키로 설정하여, 동일한 주문 내에서 각 상품이 고유하게 식별될 수 있도록 합니다.


8. 요약

  • PRIMARY KEY는 테이블에서 각 행을 고유하게 식별하는 데 사용되며, NULL 값을 허용하지 않고 중복이 불가능합니다.
  • 테이블 생성 시 PRIMARY KEY를 지정할 수 있으며, ALTER TABLE을 통해 나중에 추가하거나 제거할 수 있습니다.
  • 복합 기본 키는 여러 열을 조합하여 고유성을 보장할 수 있습니다.
  • AUTO_INCREMENT는 주로 기본 키 열에서 자동으로 증가하는 고유 값을 생성하는 데 사용됩니다.
  • PRIMARY KEYUNIQUE와 유사하지만, NULL 값을 허용하지 않으며 테이블당 하나만 설정할 수 있습니다.

PRIMARY KEY는 데이터베이스의 무결성을 보장하는 중요한 도구로, 데이터의 고유성과 유효성을 유지하는 데 필수적입니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com