해당 포스트는
SQLD
를 학습하며 정리한 내용에 대한 포스트입니다.
이론을 학습한 내용을 정리하고 퀴즈, 기출문제 등을 기록하려고 합니다.
🌈 NULL
💻 NULL
NULL은 아직 알려지지 않은 미지의 값이다.
NULL은
값이 없음
,미정
의 개념으로 이해할 수 있다.
0 또는 공백과는 다르다. 0은 하나의 숫자이고, 공백은 하나의 문자이다.
테이블을 생성할때 NOT NULL
또는 PRIMARY KEY
로 정의되지 않은 모든 데이터 유형은 NULL 값을 포함할 수 있다.
NULL 값을 포함하는 연산의 경우 결과값도 NULL 값이다.
- 모르는 데이터에 숫자를 더하거나 빼도 결과는 마찬가지로 모르는 데이터인 것과 같다.
결과값을 NULL이 아닌 다른 값을 얻고자할 때 NVL/ISNULL 함수를 사용한다.
- NULL 값의 대상이 숫자 유형데이터인 경우는 주로 0(ZERO)으로, 문자 유형 데이터인 경우는 공백보다는
x
같이 해당 시스템에서 의미 없는 문자로 바꾸는 경우가 많다.
예를 들어, 친구와 약속장소를 정하지 않았다고 생각해보자.
친구와 “어디서 만날까?”라는 질문에 대답하기 어렵다.
왜냐하면 아직 약속장소를 정하지 않았기 때문이다.
같은 방식으로 데이터베이스에서
NULL
값은아직 정보가 없거나 알려지지 않음
혹은적용되지 않음
을 나타낸다.
생년월일 | 이름 | 수입 | 지출 | 직업 |
---|---|---|---|---|
20000101 | 강산 | 0 | 10000 | 대학생 |
19921231 | 이로운 | NULL | 20000 | 프리랜서 |
19900402 | 이꼬비 | 100000 | 50000 | 개발자 |
위 데이터에서 강산의 수입은 0원이지만 프리랜서 이로운의 수입은 NULL이다.
얼핏보면 같아 보일 수도 있지만 두 개의 데이터가 갖는 의미는 엄연히 다르다.
결론적으로 이로운의 수입은 0원일 수도 있고 수천만 원일 수도 있다.
어떠한 사유로 데이터가 입력되지 않아 NULL 값이 된 것이다.
SELECT 수입 - 지출 FROM 테이블
생년월일 | 이름 | 수입 | 지출 | 직업 |
---|---|---|---|---|
20000101 | 강산 | 0 | 10000 | 대학생 |
19921231 | 이로운 | NULL | 20000 | 프리랜서 |
19900402 | 이꼬비 | 100000 | 50000 | 개발자 |
가로 연산 : NULL이 포함되어 있으면 결과값은
NULL
이 된다.
SELECT SUM(수입) FROM 테이블
생년월일 | 이름 | 수입 | 지출 | 직업 |
---|---|---|---|---|
20000101 | 강산 | 0 | 10000 | 대학생 |
19921231 | 이로운 | NULL | 20000 | 프리랜서 |
19900402 | 이꼬비 | 100000 | 50000 | 개발자 |
세로 연산: 다른 인스턴스의 데이터와 연산할 때는 NULL 값을
제외
한다.
🎯 추가 내용
NULL과의 비교 연산 결과는 항상 NULL
NULL이 포함된 집계 함수는 NULL을 제외하고 계산
WHERE COL IS NULL조건은 값이 NULL인 행을 반환
WHERE COL = NULL조건은 결과가 항상
FALSE
이므로 아무 행도 반환하지 않음
📚 레퍼런스
정미나. (유튜브 선생님에게 배우는) 유선배 SQL개발자(SQLD) 과외노트 / [정미나 저] (2023). Print.
한국데이터산업진흥원. SQL 자격검정 실전문제 : 국가공인 SQL전문가·국가공인 SQL개발자 / 한국데이터산업진흥원 [편] (2020). Print.