Oracle 기준으로 다음 ㉠의 결과 행 수와 ㉡의 결과 값을 순서대로… | [SQLD] SQL 개발자 기출유형 모의고사 7회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 7회
Oracle 기준으로 다음 ㉠의 결과 행 수와 ㉡의 결과 값을 순서대로 나열한 것은?[강좌]
| 강좌번호 | 강좌명 |
|---|---|
| 1 | 국어 |
| 2 | 수학 |
| 3 | 영어 |
[수강신청]
| 학생번호 | 강좌번호 |
|---|---|
| 101 | 1 |
| 102 | 1 |
| 103 | 2 |
| 104 | 4 |
| 105 | (null) |
㉠
SELECT R.학생번호, C.강좌명 FROM 강좌 C, 수강신청 R WHERE C.강좌번호(+) = R.강좌번호;
㉡
SELECT COUNT(*) FROM 강좌 C CROSS JOIN 수강신청 R WHERE C.강좌번호 <> R.강좌번호;
1
3, 12
2
5, 9
3
5, 12
4
4, 9
해설
㉠은 (+) 가 강좌 쪽에 붙어 수강신청이 기준인 외부 조인(
수강신청 LEFT OUTER JOIN 강좌)이므로 5행이고, ㉡은 CROSS JOIN 15행 중 같은 강좌 3쌍과 NULL 비교 3쌍을 뺀 9이다.㉠에서 강좌번호가 4 인 신청과 강좌번호가 NULL 인 신청은 강좌명이 NULL 인 채 남고, 신청이 없는 영어는 나오지 않는다.
- 4, 9 는 (+) 가 붙지 않은 강좌 쪽이 보존된다고 거꾸로 본 결과이다.
- 5, 12 는 NULL 과의 <> 비교를 참으로 본 경우로, 결과는 UNKNOWN 이라 빠진다.
- 3, 12 는 ㉠을 등가 조인으로 본 데다 NULL 비교까지 참으로 셈한 결과이다.
오류나 개정된 내용이 보이면 알려주세요