• [SQLD] Null 속성

    2025. 2. 17.

    by. hyunji1109

    개념

    • DBMS에서 아직 정해지지 않은 값을 의미
    • 0과 빈문자열('')과는 다른 개념
    • 모델 설계 시 각 컬럼별로 NULL을 허용할 지를 결정(Nullable Column)

     

     

    특성

    1. NULL을 포함한 연산 결과는 항상 NULL

     

     

    👉 COMM 컬럼에 공백으로 보이는것들이 NULL이다 (물론 빈 문자열일 수 있지만 해당 데이터에서는 NULL 임)
    이 때, NULL을 포함한 COMM과 SAL과의 연산결과는 NULL이 리턴된다.
    👉 NULL을 사전에 치환한 후 연산필요

     

    💥 NULL 치환 후 연산 결과

     

     

    2. 집계함수는 NULL을 제외한 연산 결과 리턴

    💥 sum, avg, min, max 등의 함수는 항상 NULL을 무시한다.

     

    ex) NULL을 포함한 컬럼의 집계함수 결과 1

     


    👉 COUNT는 행의 수를 리턴하는 함수인데, COUNT에 *전달 시 모든 컬럼을 체크하여 NULL일 경우는 COUNT 제외. COMM의 경우 NULL이 다수 포함되어 있는데, COUNT시 NULL을 제외. 즉 NOT NULL인 행만 세어 리턴하므로 전체 행의 수보다 적은 4의 값이 출력됨

     

    ex) NULL을 포함한 컬럼의 집계함수 결과 2


    👉 SUM,MIN,MAX 연산 결과도 모두 NULL을 무시하며 연산된다.

     

    ex) NULL을 포함한 컬럼 평균연산


    👉 AVG 연산 결과는 NULL을 무시한 평균을 리턴하므로, NULL 아닌 4개의 데이터들의 평균을 리턴, 두 번째 수식은 평균을 직접 구한 것으로, COMM의 총 합을 총 행이 수인 14로 나눈 값이다. 따라서 이 두 연산결과는 COMM이 NULL을 포함할 경우 항상 다르게 리턴된다. NULL을 무시한 평균을 얻고자 함인지, 전체 14명에 대한 평균을 계산하고자 함인지에 따라 적절히 선택하여 사용!

     

     

    ERD 표기법

    • IE 표기법에서는 NULL 허용여부를 알 수 없음
    • 바커 표기법에서는 속성 앞에 동그라미가 NULL 허용 속성을 의미함

     

     

     

    'CS > SQL' 카테고리의 다른 글

    [SQLD] 관계형 데이터베이스  (0) 2025.02.19
    [SQLD] 본식별자 vs 인조식별자  (0) 2025.02.18
    [SQLD] 모델이 표현하는 트랜잭션  (0) 2025.02.17
    [SQLD] 관계와 조인  (0) 2025.02.16
    [SQLD] 정규화  (0) 2025.02.15

    댓글