다음 SQL 의 실행 결과로 옳은 것은?[계약]계약번호상품명10암보험1… | [SQLD] SQL 개발자 기출유형 모의고사 10회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 10회
다음 SQL 의 실행 결과로 옳은 것은?

[계약]

계약번호상품명
10암보험
11실손
12운전자
13치아

[청구]

청구번호계약번호상태
10010지급
10111반려
10211지급
10312반려
SELECT K.계약번호, K.상품명, Q.청구번호
  FROM 계약 K LEFT OUTER JOIN 청구 Q
    ON K.계약번호 = Q.계약번호
 WHERE Q.상태 <> '반려'
 ORDER BY K.계약번호, Q.청구번호;
1
계약번호상품명청구번호
10암보험100
11실손102
12운전자(null)
13치아(null)
2
계약번호상품명청구번호
10암보험100
11실손101
11실손102
13치아(null)
3
계약번호상품명청구번호
10암보험100
11실손102
4
계약번호상품명청구번호
10암보험100
11실손102
13치아(null)
해설

조인 뒤 WHERE 가 적용되므로 반려 청구 101·103 행이 빠지고, 청구가 없어 상태가 NULL 인 치아 행도 NULL <> '반려' 가 UNKNOWN 이라 제거되어 2행만 남는다.

결국 바깥 조인의 보존 효과가 사라져 INNER 조인과 같아지며, 기준 행을 살리려면 이 조건을 ON 절로 옮겨야 한다.

  • 치아 행이 남은 표는 NULL 이 <> 조건을 통과한다고 보았다.
  • 운전자·치아가 NULL 로 남은 표는 조건을 ON 절에 둔 결과다.
  • 101 행이 남은 표는 WHERE 조건을 적용하지 않았다.

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

이어서 풀어보기

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