| 제약 조건 | 핵심 규칙 | 목적 (예시) |
|---|---|---|
| NOT NULL | NULL 값 비허용 | (필수 입력) 이름, 아이디 |
| UNIQUE | 중복 값 비허용 | (유일성 보장) 이메일, 주민번호 |
| PRIMARY KEY | NOT NULL + UNIQUE | (행의 고유 식별) 학번, 회원ID |
| FOREIGN KEY | 다른 테이블의 PK만 참조 가능 | (테이블 관계 연결) 수강신청의 학번 |
| CHECK | 지정된 조건 만족 | (데이터 검증) 나이 > 0, 성별 IN ('남', '여') |
| DEFAULT | 값 생략 시 자동 입력 | (기본값 설정) 포인트 = 0, 가입일 = 오늘 날짜 |
DB 설계에서 데이터의 정합성(Intergrity)을 유지하고, 무결성(Consistency)을 보장하기 위해 사용되는 규칙
컬럼에 NULL 값이 들어가는 것을 방지
CREATE TABLE Employees (
employee_id INT NOT NULL,
name VARCHAR(100) NOT NULL,
hire_date DATE
);
컬럼에 중복된 값이 들어가는 것을 방지
CREATE TABLE Users (
user_id INT NOT NULL UNIQUE,
email VARCHAR(100) UNIQUE
);
테이블에서 각 레코드를 고유하게 식별할 수 있는 칼럼
CREATE TABLE Customers (
customer_id INT PRIMARY KEY,
name VARCHAR(100)
);
다른 테이블의 기본 키나 고유 키를 참조하여 테이블 간의 관계를 정의
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
);
# Orders 테이블의 customer_id가 Customers 테이블의 customer_id를 참조하도록 외래 키 제약을 설정
칼럼의 값이 지정된 조건을 만족하는지 검사 → 데이터 유효성 보장
CREATE TABLE Employees (
employee_id INT PRIMARY KEY,
salary DECIMAL(10, 2),
CHECK (salary >= 0) # salary는 음수가 될 수 없음
);
칼럼에 값이 입력되지 않았을 경우 기본값을 자동으로 삽입
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
order_status VARCHAR(20) DEFAULT 'Pending'
);
칼럼에 인덱스를 생성하는 기능
CREATE INDEX idx_employee_name ON Employees (name);
# Employees 테이블의 name 컬럼에 대해 인덱스를 생성 (검색 성능 향상)