본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/DB

[sql] NULL 널? 개념, NULL 중요도와 연산, 선택, NULL관련 함수 종류, NULL 정렬 (널 사랑하겠어)

by 미노드 2023. 7. 13.

DB에서 null은 무엇일까? null로 저장 되는게 무슨 의미를 가질까?

null(NULL)은 아직 정의되지 않은 값 입니다.

NULL은 0이 아니며, 공백도 아닙니다.
그저 NULL이라는 것으로 표현되며 정의 되지 않은 것으로 여겨집니다.
NULL은 unknown 또는 N/A(not applicable)이라 쓰기이도 합니다.

 *** 오라클의 경우에는 사용자가 ' '(공백) 만 VARCHAR2 데이터 타입에 INSERT를 하면
내부에서 자동적으로 NULL로 바꿔서 저장해줍니다.
(오라클은 공백 문자열이 저장되는 걸을 허용하지 않음 그냥 NULL로 처리)
그렇다고해서 공백 = null 이라고 하는건 틀린 겁니다. (원래 공백과 null은 다른 개념입니다.)

보통 테이블을 생성할 때 기본키는 NULL일 수 없다는 조건이 붙습니다. (not null이어야만 한다)
테이블의 데이터를 구분하는 대표 값으로 값이 중복되거나 null일 경우 구분하는게 불가능 해지기 때문입니다.

만약 null값이 포함된 컬럼을 정렬시킬때 어느 순위에 위치하게 될까?

실험해봤다.

오라클db는 문자, 숫자 모두 null을 가장 큰 값으로 인식

0123
Oracle DB null 정렬

mysql에선 문자, 숫자 모두 null을 가장 작은 값으로 인식

0123
mysql null 정렬

postgre에선 문자, 숫자 모두 null을 가장 큰 값으로 인식

0123
postgre null 정렬

 

db마다 null의 정렬 기준도 다르니 개발할 때 이걸 알고 모르고 차이는 클 것이라 생각된다.

원래 튜닝업무나 설계하는데 있어 null은 왠만하면 사용 안하는걸 권장하는 추세이다보니
개발 단에서 null을 공백(띄어쓰기없는) 또는 0 으로 치환해서 넣는 로직도 사용한다.