본문 바로가기
SQL 문제 풀기/2. SQLD 기출 : 2024.3.01~2024.4.25

<SQLD 5> is null 연산자를 사용법에 대한 기출문제

by HYEHYE_SON 2024. 3. 6.
728x90

매일 SQLD 기출 문제 풀기 챌린지



문제5.

다음 보기 중 COMM 에 NULL이 아닌 데이터를 찾는 SQL로 올바른 것은?

 

① SELECT COMM FROM EMP WHERE COMM <> '' ;

② SELECT COMM FROM EMP WHERE COMM != '' ;

③ SELECT COMM FROM EMP  WHERE COMM IS NOT NULL ;

④ SELECT COMM FROM EMP WHERE COMM NOT IN (NULL) ;


해설해보기


< NULL >

NULL은 IS NULL 혹은 IS NOT NULL을 사용함
따라서 정답은 


----------------------

< 빈문자열('') vs NULL  vs 공백('   ') > 
빈 문자열('')과 NULL과 공백('   ')은 SQL에서 엄격하게는 다른 의미

1. 빈 문자열('')
    - 빈 문자열은 길이가 0인 문자열을 나타냄 
     - 즉, 아무런 문자도 포함하지 않는 빈 문자열을 의미
     - 예를 들어, 문자열과 관련된 비교나 조건 검사에서 사용 가능
     
      ex.
      SELECT *
           FROM employees
           WHERE first_name = '';

           # fiste_name이 빈 문자열인 경우를 찾는 조건
           #문자열이긴 하지만 길이가 0이므로 아무런 데이터가 포함되지 않음

2. NULL
    - NULL은 값이 존재하지 않음을 의미. 알 수 없는 값.
    - 특정 열의 값이 NULL인 경우, 해당 열은 값을 가지지 않는 상태.
    - NULL은 데이터의 부재를 나타내는 특별한 값으로, 비교 연산에서 특별한 주의가 필요.

    ex.
    SELECT *
         FROM employees
         WHERE middle_name IS NULL;


차이점:
데이터베이스 설계 시에 NULL을 사용하는 것과 빈 문자열을 사용하는 것에는 의미적인 차이가 있을 수 있음

3. 공백('   ')
    - 길이가 있는 문자열이지만, 실제로는 공백 문자로만 이루어진 문자열
    - 모든 문자가 공백이기 때문에 실제로는 데이터를 가지고 있지 않는 것과 유사

    ex.
    SELECT *
         FROM employees
         WHERE last_name = '    '
       
           # `last_name`이 공백 문자열인 경우를 찾는 조건
           # 이는 길이가 3인 문자열이지만, 


※ 참고
특정 상황에서는 null 과 ''을 동일하게 볼 수 있고 다르게 볼 수도 있다.
때문에 데이터베이스 설계 및 쿼리 작성시 차이를 고려하 작성해야 한다.

 

실행해보기

SELECT COMM 
	FROM EMP
    	WHERE COMM IS NOT NULL;

 

반응형