Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[예약]승… | [SQLD] SQL 개발자 기출유형 모의고사 4회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 4회
Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[예약]
| 승객번호 | 편명 |
|---|---|
| 1 | KE101 |
| 1 | KE101 |
| 1 | KE205 |
| 2 | KE101 |
| 3 | OZ330 |
| 3 | OZ330 |
| 4 | (null) |
[탑승]
| 승객번호 | 편명 |
|---|---|
| 1 | KE101 |
| 2 | KE205 |
| 3 | OZ330 |
| 4 | (null) |
SELECT 승객번호, 편명 FROM 예약 MINUS SELECT 승객번호, 편명 FROM 탑승 ORDER BY 승객번호;
1
| 승객번호 | 편명 |
|---|---|
| 1 | KE205 |
| 2 | KE101 |
| 4 | (null) |
2
| 승객번호 | 편명 |
|---|---|
| 1 | KE205 |
| 2 | KE101 |
3
| 승객번호 | 편명 |
|---|---|
| 2 | KE205 |
4
| 승객번호 | 편명 |
|---|---|
| 1 | KE101 |
| 1 | KE205 |
| 2 | KE101 |
| 3 | OZ330 |
해설
MINUS 는 승객번호와 편명을 함께 비교해 탑승에 없는 예약 행만 남기므로 (1, KE205)·(2, KE101) 두 행이 결과이다.
집합 연산자는 중복을 제거하므로 두 번 예약한 (1, KE101)·(3, OZ330) 도 탑승에 한 번 있으면 모두 사라지고, NULL 끼리는 같은 값으로 보아 (4, NULL) 도 제거된다.
- (4, NULL) 이 남은 표는 집합 연산에서 NULL 을 서로 다른 값으로 본 결과이다.
- (2, KE205) 만 있는 표는 탑승에서 예약을 뺀 반대 방향의 결과이다.
- 네 행짜리 표는 중복 건수만큼 빼는 MINUS ALL 처럼 계산한 결과이다.
오류나 개정된 내용이 보이면 알려주세요