CodeGym /행동 /SQL SELF /NULL과의 첫 만남. NULL과 0의 차이

NULL과의 첫 만남. NULL과 0의 차이

SQL SELF
레벨 9 , 레슨 0
사용 가능

이제 NULL에 대해 좀 더 자세히 얘기해볼 시간이야. 이게 그냥 아무 의미 없는 얘기가 아니야, 우리 주인공은... 아무것도 아닌 것처럼 보여도 말이지. 만약 테이블이 집이라면, NULL은 그 집의 유령 같은 존재야 — 조용하고, 수수께끼 같고, 예측 불가하지. 분명히 어딘가 있긴 한데, 질문에도 대답 안 하고, 계산에도 안 끼고, 비교도 피하지. 이건 단순히 "비어있음"이 아니라 "아무것도 모름"이야.

SQL 세계에서 NULL은 0도 아니고, 빈 문자열도 아니고, 우리가 흔히 생각하는 "데이터 없음"도 아니야. 이건 특별한 "모름"의 표시라서 조심해서 다뤄야 해. 오늘은 NULL이 단순히 이상한 손님이 아니라, 모든 데이터베이스에서 중요한 멤버인 이유를 알아볼 거야. 왜냐면 이건 진짜로 "값을 모름 또는 아직 정해지지 않음"을 의미하거든.

NULL이 빈 문자열이나 숫자 0이랑 뭐가 다를까?

많은 초보자들이 NULL을 빈 문자열 ''이나 숫자 0이랑 헷갈려 해. 핵심 차이점을 같이 보자:

개념
NULL 값이 완전히 없음. 이건 그냥 빈 상자가 아니라, 상자 자체가 없는 거야
빈 문자열 그냥 아무 문자도 없는 문자열. 예시: ''
숫자 0 0이라는 구체적인 숫자 값을 의미함

실생활 예시: 직원 테이블이 있다고 해보자, 그리고 거기에 월급을 저장해. 월급이 0이면, 그 사람은 돈을 하나도 못 받은 거야. 근데 월급이 NULL이면, 그냥 얼마 받는지 모르는 거야 (아니면 아직 정해지지 않았거나).

NULL을 어떻게 해석해야 할까

이제 NULL이 뭔지 조금 알았으니까, SQL에서 어떻게 다루는지 보자. NULL에 대해 제일 중요한 건 한 문장으로 말할 수 있어: NULL은 아무것과도 같지 않고, 아무것과도 다르지 않아, 심지어 자기 자신하고도.

SELECT NULL = NULL;  -- 결과: FALSE

놀랍지? 왜 그럴까? NULL은 "모름"이기 때문이야. 모르는 값 두 개가 있으면, 그게 같은지 다른지 말할 수가 없어.

몇 가지 예시를 같이 보자:

NULL 연산 예시

SELECT NULL + 1;      -- 결과: NULL
SELECT NULL * 100;    -- 결과: NULL
SELECT NULL = 0;      -- 결과: FALSE
SELECT NULL <> 0;     -- 결과: FALSE

NULL은 더하기, 곱하기, 다른 계산을 해도 항상 NULL이 나와. 여기서 NULL은 0이랑은 완전 다르게 동작해. 뭔가를 허공에 던지면, 그 허공이 다 삼켜버리는 느낌이랄까.

실전 예시

students 테이블에 학생 정보가 있다고 해보자:

id name birth_date grade
1 Alice 2000-01-01 85
2 Bob NULL 90
3 Charlie 1999-05-22 NULL
4 Diana NULL NULL

예시 1: 조건에서 NULL의 영향

생일이 없는 학생을 찾으려고 WHERE birth_date = NULL 조건을 쓰면:

SELECT *
FROM students 
WHERE birth_date = NULL;

아무 결과도 안 나와. 왜냐면 NULL = NULLFALSE가 되거든. NULL을 체크하려면 IS NULL을 써야 해:

SELECT * FROM students WHERE birth_date IS NULL;

결과:

id name birth_date grade
2 Bob NULL 90
4 Diana NULL NULL

예시 2: 계산에서 NULL의 영향

id name birth_date grade
1 Alice 2000-01-01 85
2 Bob NULL 90
3 Charlie 1999-05-22 NULL
4 Diana NULL NULL

모든 학생의 평균 점수를 계산해보면:

SELECT AVG(grade) FROM students;

결과는 87.5가 나와. 왜냐면 NULLAVG, SUM, MIN, MAX 같은 집계 함수에서 무시되거든. 하지만 조심해야 해! NULL이 있는 행도 포함해서 뭔가 하려면 추가 작업이 필요해.

NULL을 다루는 방법은 다음 강의에서 더 자세히 배울 거야.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION