본문 바로가기
데이터베이스

NULL의 개념, 공백 문자(" "), NA, NaN과 차이점은 뭘까?

by 데이널 2024. 6. 19.

NULL에 대한 개념이 헷갈리는 분들 많지 않나요?  데이터 분석이나 데이터베이스 관리를 하다 보면 NULL, 공백문자(" "), NA, NaN과 같은 용어를 자주 접하게 됩니다. 유사해 보일 수도 있지만 각각은 의미와 활용은 다릅니다. 이 용어들의 차이점을 살펴보고 NULL의 사례를 통해 정확히 이해해 보겠습니다.
 

NULL과 “ ”의 차이

NULL은 사전적으로 ‘존재하지 않음’을 뜻합니다.  0, 빈 문자열 또는 절대 공백이 아닙니다. 대신, 이는 어떤 값도 없음을 의미하는데요. “ ”는 공백 문자가 들어가 NULL과는 다른 의미입니다.
 
데이터베이스에서 NULL은 ‘아직 정해지지 않은’으로 해석을 더 많이 합니다. 한편 데이터 분석에서는 값이 없으면 NA라고 해서 결측값이라고 생각합니다. 그런데 데이터베이스 입장에서는 두 가지 측면이 다 있습니다.

  • 값이 있는데 넣지 못한 경우 = 결측
  • 값을 일부로 넣지 않은 경우 = 미정


이렇게 NA와 NULL도 서로 의미 차이가 있습니다. NULL은 데이터베이스에서 NA는 데이터 분석에서 사용되기도 하고요. 그런데 NA와 NaN과는 무슨 차이가 있나고요? 바로 알아 보시죠.

NA와 NaN의 차이

1. NA(사용할 수 없음)

NA는 데이터 분석에서 사용하며 "사용할 수 없음"을 의미합니다. 특히 Python, R 같은 프로그래밍 언어에서 사용되죠. DataSet에 데이터가 누락되었거나 사용할 수 없음을 나타냅니다.
 
Pandas에서 NA는 데이터 프레임이나 배열에서 누락된 항목을 표시하는 데 사용됩니다. 이럴 경우 분석가는 결측 처리를 수행하게 됩니다. 결측 처리 방법은 링크를 참고하시기 바랍니다. 
 

2. NaN(숫자가 아님)

NaN은 "Not a Number"(숫자가 아님)를 나타냅니다. 예를 들어, 0 나누기 0의 결과는 정의되지 않거나 표현할 수 없는 값이 됩니다. 이렇게 NaN은 수치 계산에서 유효하지 않은 연산이나 정의 되지 않는 값을 나타네는데 사용됩니다.
 
 

NULL에 대한 사례 문제

이제 NULL에 대한 응용문제를 한번 살펴보겠습니다. NULL은 데이터베이스에서 주로 사용되며 집합의 결과가 없을 때 나오게 됩니다. 다음은 SQLD에 출제되었던 문제입니다. 답은 아래에 있으니, 스크롤 하시지 마시고 풀어 보세요. 정답을 맞추면 NULL에 대한 이해가 다 된것입니다. 

SQL_TAB 테이블
SQL_TAB 테이블

 

  1. SELECT NVL(SUM(COL1), 0) FROM SQL_TAB WHERE 1 = 2;
  2. SELECT MAX(COL1) FROM SQL_TAB WHERE 1 = 2;
  3. SELECT COUNT(COL1) FROM SQL_TAB WHERE 1 = 2;

 

문제) 다음 중 결과가 다른 SQL은 무엇인가?


해설)

WHERE 조건이 1 = 2일 경우 이 조건의 결과는 무조건 False이기 때문에 해당 결과 집합은 아무런 데이터도 출력되지 않습니다.

  • 1번은 아무것도 없는 NULL이 출력되는데, NVL함수 변환으로 0이 결과로 나오게 됩니다.
  • 2번은 아무것도 출력되지 않습니다. NULL이죠
  • 3번은 COUNT는 SUM, AVG, MAX, MIN과 같은 집계함수와 약간 다르게 연산합니다. 집합의 개수를 세는 용도입니다. 집합의 건수가 없기 때문에 0이라고 출력합니다.

 

정답) 2번

 

마치며

이제 NULL에 대해 어떤 의미인지 아셨나요? 최근 SQLD 출제 경향을 보니, 꼭 NULL에 대한 개념 문제가 1문제 이상 출제 되더군요. 그만큼 실제 현장에서 많은 개발자와 DBA들이 실수하는 부분이라 생각 합니다. NULL의 개념을 모르면 SQL을 작성할 때 원하지 않았던 결과가 나올 수 있다는 것을 알아두세요.