이 글에서 꼭 잡아야 할 것
NULL은 값이 0인 것도, 빈 문자열인 것도 아닌 특별한 상태다. NULL을 제대로 이해하지 못하면 비교, 집계, 정렬, 함수 결과에서 계속 오답이 생긴다.
SQL의 세 값 논리는 TRUE, FALSE, UNKNOWN을 함께 다룬다. NULL이 들어간 비교는 종종 UNKNOWN이 되어 필터링에서 제외되기 때문에, 문제를 풀 때는 NULL이 있는지 없는지부터 먼저 확인하는 습관이 매우 중요하다.
개념 지도와 이해 포인트
대표 문법 패턴
SELECT employee_id, commission_pct,
NVL(commission_pct, 0) AS commission_rate
FROM employees;
SELECT employee_id, manager_id
FROM employees
WHERE manager_id IS NULL;
문법 읽는 포인트
- `NVL(expr1, expr2)`는 expr1이 NULL이면 expr2를 반환한다.
- `COALESCE`는 여러 후보 중 첫 번째 유효값을 고를 때 유리하다.
- NULL 비교에는 반드시 `IS NULL` 또는 `IS NOT NULL`을 사용한다.
핵심 용어
- NULL
- NVL
- COALESCE
보너스가 없는 직원을 0으로 치환해 보기
보고서나 계산식에서는 NULL 때문에 결과가 통째로 NULL이 되는 일이 잦다. 대체값을 미리 정해 두면 계산 결과를 안정적으로 유지할 수 있다.
SELECT employee_id,
salary,
NVL(commission_pct, 0) AS commission_pct,
salary * NVL(commission_pct, 0) AS commission_amount
FROM employees
ORDER BY employee_id;
수험 체크포인트와 자주 하는 실수
시험 체크포인트
- `= NULL`은 항상 오답 포인트로 자주 등장한다.
- 집계 함수는 NULL을 자동 제외하는 경우가 많으므로 COUNT 차이를 함께 묻는 문제가 나온다.
- `NVL`과 `COALESCE`의 차이는 인자 수와 이식성 측면에서 비교하면 기억이 잘 남는다.
자주 하는 실수
- NULL을 0이나 공백과 같은 의미로 외워 버리는 실수
- `NOT IN` 목록 안에 NULL이 있을 때 결과가 비어 보이는 상황을 놓치는 실수
- NULL 치환 후 데이터 타입이 바뀌는 경우를 고려하지 않는 실수
연결 학습
NULL을 제대로 다루면 SQL 오답의 상당수를 줄일 수 있다. 다음 챕터에서는 결과를 보기 좋게 정렬하는 ORDER BY와 별칭 활용을 정리한다.
댓글 0
작성자 이름과 댓글 내용을 입력하면 바로 등록됩니다. 답글은 한 단계까지 지원하고, 댓글은 최대 200자까지 작성할 수 있습니다.
같은 카테고리에서 이어서 읽기
지금 읽은 글과 가까운 흐름의 글 5개를 모아 두었습니다. 바로 앞뒤 문맥을 이어서 읽고 싶을 때 가장 편합니다.
SELECT 문과 FROM 절의 핵심 구조
SELECT 문은 SQL 학습의 출발점이며, 시험과 실무 모두에서 가장 많이 쓰이는 문장이다. 이번 챕터에서는 컬럼 선택, 별칭, DISTINCT, FROM 절의 역할을 중심으로 조회문의 기본 골격을 정리한다.
WHERE 절과 비교 연산자 완전 정리
좋은 SQL은 필요한 행만 남기는 SQL이다. WHERE 절은 조회 결과의 품질을 결정하는 핵심 구간이며, 비교 연산자를 어떻게 쓰느냐에 따라 결과가 완전히 달라진다.
논리 연산자와 BETWEEN, IN, LIKE
조건이 하나일 때보다 여러 조건이 섞일 때 실수가 많이 나온다. AND, OR, NOT과 BETWEEN, IN, LIKE를 이해하면 실제 업무형 SQL에 훨씬 가까워진다.
ORDER BY와 정렬, 별칭 활용
정렬은 결과를 해석하는 마지막 단계다. ORDER BY를 이해하면 보고서형 SQL을 더 읽기 쉽게 만들 수 있고, 여러 정렬 기준을 설계하는 감각도 생긴다.
문자 함수: UPPER, LOWER, SUBSTR, INSTR
문자 함수는 텍스트 데이터를 다듬고 비교하는 데 필수적이다. 이름, 주소, 코드, 이메일처럼 문자열 중심 데이터가 많은 실무에서는 사용 빈도가 매우 높다.
댓글을 불러오는 중입니다.