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;
반응형
'SQL 문제 풀기 > 2. SQLD 기출 : 2024.3.01~2024.4.25' 카테고리의 다른 글
<SQLD 7> 문자 함수 이해에 대한 기출문제 (0) | 2024.03.07 |
---|---|
<SQLD 6> 문자 함수 SUBSTR에 대한 기출문제 (0) | 2024.03.06 |
<SQLD 4> between .. and 연산자를 사용법에 대한 기출문제 (0) | 2024.03.04 |
<SQLD 3> in 연산자를 사용법에 대한 기출문제 (0) | 2024.03.03 |
<SQLD 2> like 연산자를 사용법에 대한 기출문제2 (0) | 2024.03.02 |