IS NULL, IS NOT NULL과 COALESCE
IS NULL로 NULL을 감지하고, COALESCE / NULLIF로 대체하며, 누락된 데이터가 있어도 안정적으로 작동하는 쿼리를 설계합니다.
IS NULL, IS NOT NULL과 COALESCE은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
NULL 검사하기
IS NULL과 IS NOT NULL을 사용하십시오. = NULL은 절대 사용하지 마십시오:
SELECT * FROM users WHERE deleted_at IS NULL;
SELECT * FROM users WHERE deleted_at IS NOT NULL;= NULL이 조용히 실패하는 이유
어떤 값이든 NULL과 비교하면 NULL(알 수 없음)이 됩니다. 해당 행은 제거되지만 오류가 발생하지 않으므로 버그가 그대로 배포됩니다:
SELECT * FROM users WHERE deleted_at = NULL;
-- → returns 0 rows, alwaysCOALESCE: 첫 번째 NULL이 아닌 값
COALESCE는 임의의 개수의 인수를 받아 NULL이 아닌 첫 번째 인수를 반환합니다:
SELECT id,
COALESCE(nickname, full_name, email, 'Anonymous') AS display_name
FROM users;WHERE에서 COALESCE 사용하기
COALESCE를 사용하여 NULL을 정렬하거나 비교할 수 있는 기본값으로 바꾸십시오:
-- Treat NULL last_login_at as the epoch:
SELECT * FROM users
ORDER BY COALESCE(last_login_at, '1970-01-01') DESC;NULLIF: 반대 기능
NULLIF(a, b)는 a = b일 때 NULL을 반환하고, 그렇지 않으면 a를 반환합니다:
-- Treat 0 as missing so AVG ignores it:
SELECT AVG(NULLIF(price, 0)) FROM products;
-- Convert empty string to NULL on insert:
INSERT INTO contacts (phone) VALUES (NULLIF(:phone, ''));조건부 기본값에 CASE 사용하기
COALESCE가 충분히 유연하지 않을 때 CASE는 범용적인 대안입니다:
SELECT id,
CASE
WHEN status IS NULL OR status = '' THEN 'unknown'
WHEN status = 'A' THEN 'active'
ELSE status
END AS status_label
FROM users;CHECK와 제약 조건에서의 NULL
CHECK 제약 조건은 조건이 NULL일 때 통과합니다. NULL을 금지해야 한다면 명시적으로 지정하십시오:
CREATE TABLE prices (
amount NUMERIC(10,2),
CHECK (amount > 0) -- amount = NULL passes!
);
-- Better:
CREATE TABLE prices2 (
amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);JOIN ON에서의 NULL
JOIN 키가 NULL인 행 쌍은 절대 일치하지 않습니다. NULL = NULL은 NULL이기 때문입니다. NULL과 NULL을 같다고 처리하려면 IS NOT DISTINCT FROM을 사용하십시오:
SELECT * FROM a JOIN b ON a.key IS NOT DISTINCT FROM b.key;NULL과 UNIQUE
표준 SQL은 UNIQUE 제약 조건에서 NULL을 서로 다른 값으로 취급하므로 NULL인 행을 여러 개 둘 수 있습니다:
CREATE TABLE invites (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE
);
INSERT INTO invites (email) VALUES (NULL), (NULL); -- both succeed!NULL과 집계 복습
COUNT(*)를 제외한 집계 함수는 NULL을 건너뜁니다.
SELECT COUNT(*) FROM users; -- all rows
SELECT COUNT(email) FROM users; -- rows where email IS NOT NULL
SELECT COUNT(DISTINCT id) FROM users;가능하면 항상 NOT NULL을 선언하십시오
NOT NULL은 가장 간단하고 강력한 정확성 보장입니다. 절대 비어 있으면 안 되는 모든 열에 추가하십시오.
복습
NULL 처리는 미묘한 SQL 버그가 발생하는 가장 큰 원인입니다.
IS NULL로 검사COALESCE로 대체NULLIF로 특정 값에서 NULL로 변환- 기본값으로
NOT NULL사용
빠른 확인
NULL이 아니면 email을 반환하고, NULL이면 리터럴 'no-email'을 반환하는 표현식은 무엇입니까?
자주 묻는 질문
“IS NULL, IS NOT NULL과 COALESCE” 강의는 무료인가요?
네 — “IS NULL, IS NOT NULL과 COALESCE” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“IS NULL, IS NOT NULL과 COALESCE”에서 뭘 배우나요?
IS NULL로 NULL을 감지하고, COALESCE / NULLIF로 대체하며, 누락된 데이터가 있어도 안정적으로 작동하는 쿼리를 설계합니다. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“IS NULL, IS NOT NULL과 COALESCE” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- LIKE 패턴과 와일드카드
- 집합을 위한 IN과 NOT IN
- 범위를 위한 BETWEEN
- IS NULL, IS NOT NULL과 COALESCE