문제
다음 보기 중 행의 수가 가장 많은 SQL은?
| CODE | PCOLOR |
|---|---|
| 1 | 빨강 |
| 2 | 노랑 |
| 3 | 파랑 |
| 4 | 검정 |
| CODE | PSIZE |
|---|---|
| 1 | 소 |
| 2 | 중 |
| 3 | 대 |
| 4 | 특대 |
① SELECT CODE FROM TAB1 UNION ALL SELECT CODE FROM TAB2 ② SELECT * FROM TAB1 JOIN TAB2 ON TAB1.CODE = TAB2.CODE ③ SELECT * FROM TAB1, TAB2 WHERE TAB1.PCOLOR IN ('노랑','파랑','검정') AND TAB2.PSIZE IN ('소','중','대') ④ SELECT * FROM TAB1 FULL OUTER JOIN TAB2 ON TAB1.CODE = TAB2.CODE
정답
3번
해설
정답: 3. 3번은 TAB1에서 3행, TAB2에서 3행을 선택해 조인 조건 없이 조합을 만들므로 3×3=9행이 된다.
오답 풀이
- 1번: TAB1 4행과 TAB2 4행을 UNION ALL 하므로 8행이다.
- 2번: CODE가 모두 1:1로 매칭되므로 INNER JOIN 결과는 4행이다.
- 3번: 선택된 3행과 3행의 조합으로 9행이 되어 가장 많다.
- 4번: CODE가 모두 매칭되므로 FULL OUTER JOIN 결과는 4행이다.
보충 개념 FROM 절에 여러 테이블을 나열하고 조인 조건이 없으면 카테시안 곱이 발생한다. 결과 행 수는 각 입력 행 수의 곱이다.