다음 SQL 의 실행 결과로 옳은 것은?[예약]예약번호승객명편명1김하늘… | [SQLD] SQL 개발자 기출유형 모의고사 4회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 4회
다음 SQL 의 실행 결과로 옳은 것은?[예약]
| 예약번호 | 승객명 | 편명 |
|---|---|---|
| 1 | 김하늘 | KE101 |
| 2 | 이하람 | OZ330 |
| 3 | 박구름 | (null) |
| 4 | 최나래 | KE205 |
| 5 | 정보라 | LJ007 |
| 6 | 윤솔 | KE101 |
[결항편]
| 편명 |
|---|
| OZ330 |
| LJ007 |
SELECT 예약번호, 승객명 FROM 예약 WHERE 편명 NOT IN (SELECT 편명 FROM 결항편) ORDER BY 예약번호;
1
| 예약번호 | 승객명 |
|---|---|
| 2 | 이하람 |
| 5 | 정보라 |
2
| 예약번호 | 승객명 |
|---|---|
| 1 | 김하늘 |
| 4 | 최나래 |
| 6 | 윤솔 |
3
| 예약번호 | 승객명 |
|---|
4
| 예약번호 | 승객명 |
|---|---|
| 1 | 김하늘 |
| 3 | 박구름 |
| 4 | 최나래 |
| 6 | 윤솔 |
해설
편명이 결항편 목록에 없는 예약 1·4·6만 남고, 편명이 NULL 인 예약 3은 비교 결과가 UNKNOWN 이라 NOT IN 조건을 통과하지 못한다.
NULL 과의 비교는 참도 거짓도 아니므로 NULL 행은 IN 과 NOT IN 어느 쪽에도 나오지 않는다. 서브쿼리 쪽에는 NULL 이 없으므로 나머지 행은 정상 비교된다.
- 박구름까지 포함한 표는 NOT EXISTS 처럼 NULL 행을 남긴 결과이다.
- 이하람·정보라만 있는 표는 IN 조건의 결과이다.
- 행이 없는 표는 서브쿼리 결과에 NULL 이 있을 때의 상황이다.
오류나 개정된 내용이 보이면 알려주세요