728x90
제약 조건은 테이블에 데이터를 저장할 때, 특정 규칙을 지키도록 강제하는 장치다. 이 규칙 덕분에 우리는 잘못되거나 일관성 없는 데이터가 입력되는 것을 원천적으로 차단할 수 있다. 데이터의 '무결성', 즉 데이터에 결점이 없는 상태를 유지하는 것이 제약 조건의 핵심 목표다.
제약 조건
NOT_NULL : 필수 입력 항목 지정
- 이 제약 조건이 걸린 열에는 NULL 값(값이 없음)을 허용하지 않는다.
- 즉, 데이터를 INSERT 할 때 이 열의 값은 반드시 입력되어야 한다. 고객의 이름, 아이디, 상품의 가격 등은 비어있으면 안 되는 핵심 정보이므로 NOT_NULL을 설정해야 한다.
UNIQUE : 중복 불가 항목 지정
- 이 제약 조건이 걸린 열의 값은 테이블 내에서 항상 고유해야 한다. 즉, 중복된 값을 허용하지 않는다. 고객의 아이디(ID), 이메일 주소, 사업자 등록번호 등은 다른 사람과 중복되면 안 되므로 UNIQUE 제약 조건을 사용한다.
- PRIMARY_KEY 와의 차이점: PRIMARY KEY 는 테이블 당 단 하나만 존재할 수 있지만, UNIQUE는 여러 열에 설정할 수 있다. PRIMARY_KEY는 UNIQUE와 NOT NULL 속성을 모두 포함하는, 더 강력한 개념이다.
PRIMARY_KEY (PK) : 테이블의 대표 식별자
- 테이블의 모든 행을 유일하게 식별하는 열. NOT_NULL 과 UNIQUE의 특징을 모두 가진다. 모든 테이블에는 반드시 PRIMARY_KEY가 있어야 한다.
- AUTO_INCREMENT : MySQL에서 PRIMARY_KEY 에 자주 사용하는 옵션이다. 정수 타입의 PRIMARY_KEY 열에 이 옵션을 설정하면, 새로운 데이터가 추가될 때마다 1씩 자동으로 증가하는 번호를 할당해 준다. 우리가 직접 ID를 고민해서 넣을 필요가 없어 매우 편리하다.
FOREIGN KEY (FK) : 테이블 간의 관계 설정

- 한 테이블을 다른 테이블과 연결하는 관계의 고리. 참조하는 열의 값은 반드시 참조되는 테이블의 PRIMARY_KEY 값 중 하나여야 한다는 '참조 무결성'을 강제한다.
- 예를 들어 주문 테이블에 customer_id (FK) 값이 99가 입력된다고 가정해 보자. customers 테이블에는 99번 고객 번호가 없다. 이런 경우 데이터베이스는 데이터의 입력을 막는다. (오류가 발생한다.)
DEFAULT : 기본값 설정
- 데이터를 INSERT 할 때 특정 열의 값을 명시하지 않으면, 자동으로 설정된 기본값이 입력된다. 예를 들어, 회원 가입 시 포인트를 따로 주지 않으면 자동으로 0점이 들어가게 하거나, 상품 등록 시 '판매 상태'를 기본적으로 '판매 중'으로 설정할 수 있다. 상품이 등록된 시간을 저장할 수도 있다.
CHECK : 컬럼에 입력되는 값이 특정 조건을 만족하는지 검사
- 설명: 조건에 맞지 않는 데이터의 입력을 막는다.
- 예를 들어
- 10보다 작은 숫자가 입력되지 않도록 막는다.
- 18세 미만의 회원이 저장되지 않도록 막는다.
728x90
'데이터 베이스 > SQL 첫걸음(인프런 강의)' 카테고리의 다른 글
| Ch03. 데이터 관리 - DDL(테이블 변경, 제거) (0) | 2025.10.08 |
|---|---|
| Ch03. 데이터 관리 - DDL(테이블 생성) (0) | 2025.10.08 |
| Ch02. 데이터 베이스 시작 - 데이터 타입 (0) | 2025.10.04 |
| Ch02. 데이터 베이스 시작 - SQL이란 (0) | 2025.10.04 |
| Ch01. 데이터 베이스 소개 - 관계형 데이터베이스 종류 (0) | 2025.09.26 |