문제
다음 두 테이블을 아래 SQL로 조인하여 질의를 수행할 때 그 결과에 대한 설명으로 옳지 않은 것은?
<고객>
| 고객번호 | 고객명 |
|---|---|
| 1 | 김하늘 |
| 2 | 이바다 |
| 3 | 박노을 |
<예약>
| 예약번호 | 예약고객 | 예약일 |
|---|---|---|
| 1 | 2 | 7월2일 |
| 2 | 1 | 7월5일 |
| 3 | 2 | 7월9일 |
| 4 | (NULL) | 7월11일 |
Select * From 고객 Inner Join 예약 On 고객.고객번호 = 예약.예약고객;
① 조회 결과의 필드 수는 5개이다. ② 예약번호 4번에 대한 정보는 결과에 나타나지 않는다. ③ 조회 결과의 레코드 수는 4개이다. ④ 고객번호 3번(박노을)에 대한 정보는 결과에 나타나지 않는다.
정답
3번
해설
정답: 3. 내부 조인은 두 테이블에서 조인 조건이 일치하는 행만 결합한다. 예약 1·2·3은 각각 고객 2·1·2와 일치하지만 예약 4는 예약고객이 NULL이라 일치하는 고객이 없다. 따라서 결과 레코드 수는 4개가 아니라 3개이므로 3번이 옳지 않다.
오답 풀이
- 1번: 고객(2개)+예약(3개) 필드가 결합되어 5개이므로 옳다.
- 2번: 예약 4번은 예약고객이 NULL이라 일치하는 고객이 없어 결과에 없으므로 옳다.
- 3번: 일치하는 행은 3개이므로 4개라는 설명은 옳지 않다.
- 4번: 고객 3번(박노을)은 예약 테이블에 참조되지 않아 결과에 없으므로 옳다.
보충 개념 내부 조인은 양쪽에 모두 대응되는 행만 남기며, 한쪽 값이 NULL이면 결합되지 않는다.