NOT NULL과 CHECK 제약 조건
NOT NULL로 누락된 값을 금지하고 CHECK로 도메인 규칙을 검증합니다(price > 0, status IN ('active','archived')).
NOT NULL과 CHECK 제약 조건은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
제약 조건이 필요한 이유
제약 조건은 검증을 데이터베이스 안으로 밀어 넣습니다. 이점은 매우 큽니다. 모든 앱, 스크립트, 임시 쿼리가 올바른 데이터를 기록하거나 명확하게 실패하게 됩니다.
NOT NULL
가장 간단한 제약 조건으로, 이 열에는 반드시 값이 있어야 합니다:
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL,
age INT -- NULL allowed
);나중에 NOT NULL 추가하기
먼저 기존 데이터를 채운 다음 제약 조건을 추가합니다:
UPDATE users SET email = 'unknown@example.com' WHERE email IS NULL;
ALTER TABLE users ALTER COLUMN email SET NOT NULL;CHECK 제약 조건
모든 행이 만족해야 하는 임의의 불리언 표현식입니다:
CREATE TABLE products (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL,
price NUMERIC(10,2) NOT NULL CHECK (price > 0),
discount NUMERIC(5,2) DEFAULT 0 CHECK (discount BETWEEN 0 AND 100)
);열거형과 같은 값에 CHECK 적용
열의 값을 정해진 집합으로 제한합니다:
CREATE TABLE orders (
id BIGSERIAL PRIMARY KEY,
status TEXT NOT NULL
CHECK (status IN ('pending','paid','shipped','cancelled'))
);NULL은 CHECK를 조용히 통과합니다
표현식이 NULL(알 수 없음)이면 CHECK 제약 조건을 통과합니다. 확실하게 보장해야 한다면 NOT NULL과 함께 사용하십시오:
CREATE TABLE invoices (
amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);여러 열에 대한 CHECK
여러 열을 참조할 수 있습니다:
CREATE TABLE bookings (
start_at TIMESTAMPTZ NOT NULL,
end_at TIMESTAMPTZ NOT NULL,
CHECK (start_at < end_at)
);나중에 CHECK 추가하기
먼저 기존 행을 검증한 다음 제약 조건을 추가합니다:
ALTER TABLE products
ADD CONSTRAINT positive_price CHECK (price > 0);
-- fails if any row violates it대형 테이블을 위한 NOT VALID 요령
처음에 전체 테이블을 검색하는 작업은 건너뛰고, 나중에 백그라운드에서 검증합니다:
ALTER TABLE products
ADD CONSTRAINT positive_price CHECK (price > 0) NOT VALID;
ALTER TABLE products VALIDATE CONSTRAINT positive_price;이름이 지정된 제약 조건
오류 메시지와 마이그레이션을 예측 가능하게 만들려면 항상 제약 조건에 이름을 지정하십시오:
ALTER TABLE products
ADD CONSTRAINT products_price_positive CHECK (price > 0);앱에서 논리를 중복 구현하지 마십시오
데이터베이스가 이를 적용하면 모든 코드 경로가 그 혜택을 받으므로 "검증하는 것을 잊었다"는 일이 없어집니다. 사용자 경험을 위해 앱에 중복 검증을 유지할 수는 있지만(즉각적인 피드백), 진실의 원천은 데이터베이스로 삼으십시오.
요약
NOT NULL과 CHECK는 가장 흔한 잘못된 데이터를 차단합니다.
- NOT NULL: 누락된 값 없음
- CHECK: 행별 임의 규칙
- 온라인으로 추가할 때 NOT VALID + VALIDATE 사용
빠른 확인
NOT NULL이 없는 열에 CHECK (price > 0)을 작성하면 어떻게 됩니까?
자주 묻는 질문
“NOT NULL과 CHECK 제약 조건” 강의는 무료인가요?
네 — “NOT NULL과 CHECK 제약 조건” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“NOT NULL과 CHECK 제약 조건”에서 뭘 배우나요?
NOT NULL로 누락된 값을 금지하고 CHECK로 도메인 규칙을 검증합니다(price > 0, status IN ('active','archived')). 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“NOT NULL과 CHECK 제약 조건” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- NOT NULL과 CHECK 제약 조건
- UNIQUE 제약 조건과 복합 키
- FOREIGN KEY와 참조 동작
- DEFAULT 값과 생성 열