Oracle 쿼리 ㉮와 같은 [결과]를 ANSI 쿼리 ㉯로 얻으려 한다… | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 10회
Oracle 쿼리 ㉮와 같은 [결과]를 ANSI 쿼리 ㉯로 얻으려 한다. ( ㉠ )에 들어갈 구문으로 옳은 것은?

[계약]

계약번호고객명상태
101김하늘유지
102이도윤해지
103박서아유지
104최로운유지

[청구]

청구번호계약번호금액
1101120
2102300
310380
410350
510970

㉮

SELECT R.청구번호, C.고객명
  FROM 청구 R, 계약 C
 WHERE C.계약번호(+) = R.계약번호
   AND C.상태(+) = '유지'
 ORDER BY R.청구번호;

㉯

SELECT R.청구번호, C.고객명
  FROM 청구 R ( ㉠ ) 계약 C
    ON C.계약번호 = R.계약번호
   AND C.상태 = '유지'
 ORDER BY R.청구번호;

[결과]

청구번호고객명
1김하늘
2(null)
3박서아
4박서아
5(null)
1
INNER JOIN
2
LEFT OUTER JOIN
3
RIGHT OUTER JOIN
4
CROSS JOIN
해설

(+) 가 붙은 계약 쪽은 짝이 없을 때 NULL 로 채워지는 쪽이므로, 보존할 청구를 왼쪽에 둔 LEFT OUTER JOIN 이 같은 결과를 낸다.

C.상태(+) = '유지' 처럼 (+) 가 붙은 조건은 ON 절 조건이 되어, 해지 계약의 청구 2와 계약이 없는 청구 5도 고객명 NULL 로 남는다.

  • RIGHT OUTER JOIN 은 계약을 보존해 102·104가 청구 NULL 로 나오고 청구 2·5는 빠진다.
  • INNER JOIN 은 짝이 맞는 청구 세 건만 남겨 NULL 행이 사라진다.
  • CROSS JOIN 은 조건 없이 모든 행을 곱하는 구문이라 ON 절을 붙이면 오류가 난다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 10회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기