● NULL 이란
- DBMS 에서 아직 정해지지 않은 값을 의미
- 0과 빈문자열('')과는 다른 개념
- 모델 설계 시 각 컬럼별로 NULL 을 허용할 지를 결정(Nullable Column)
● NULL 의 특성
1. NULL 을 포함한 연산 결과는 항상 NULL
☞ COMM 컬럼에 공백으로 보이는것들이 NULL 이다(물론 빈문자열일 수 있지만 해당 데이터에서는 NULL임)
이 때, NULL을 포함한 COMM 과 SAL 과의 연산결과는 NULL 이 리턴된다.
-> NULL을 사건에 치환한 후 연산 필
2. 집계함수는 NULL 을 제외한 연산 결과 리턴
※ sum,avg,min,max 등의 함수는 항상 NULL 을 무시한다.
예)NULL 을 포함한 컬럼의 집계함수 결과 1
☞ COUNT는 행의 수를 리턴하는 함수인데,COUNT에 * 전달 시 모든 컬럼을 체크하여 NULL 일 경우는 COUNT 제외.COMM의 경우 NULL 이 다수 포함되어 있는데,COUNT 시 NULL을 제외, 즉 NOT NULL인 행만 세어 레턴하므로 전체 행의 수보다 적은 4의 값이 출력됨
예) NULL을 포함한 컬럼의 집계함수 결과 2
☞ SUM,MIN,MAX 연산 결과도 모두 NULL 을 무시하며 연산한다.
예) NULL 을 포함한 컬럼 평균연산
☞ AVG 연산 결과는 NULL 을 무시한 평균을 리턴하므로,NULL 아닌 10개의 데이터들의 평균을 리턴.두 번째
수식은 평균을 직접 구한것으로,COMM 의 총 합을 총 행이 수인 14로 나눈값이다. 따라서 이 두 연산결과는
COMM이 NULL 을 포함할 경우 항상 다르게 리턴된다. NULL을 무시한 평균을 얻고자 함인지. 전체 14명에 대한
평균을 계산하고자 함인지에 따라 적절히 선택하여 사용!
●NULL 의 ERD 표기법
- IE 표기법에서는 NULL 허용여부를 알 수 없음
- 바커 표기법에서는 속성 앞에 동그라미가 NULL 허용 속성을 의미함