Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[병동]병… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지

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

[병동]

병동코드병동명
W1본관3
W2별관5
W3신관7

[입원]

입원번호환자명병동코드퇴원일
1강민W1(null)
2오라W12026-03-04
3남궁솔W2(null)
4표지안W8(null)
5하율(null)(null)
SELECT B.환자명, A.병동명
  FROM 병동 A, 입원 B
 WHERE A.병동코드(+) = B.병동코드
   AND B.퇴원일 IS NULL
 ORDER BY B.입원번호;
1
환자명병동명
강민본관3
남궁솔별관5
(null)신관7
2
환자명병동명
강민본관3
남궁솔별관5
3
환자명병동명
강민본관3
오라본관3
남궁솔별관5
표지안(null)
하율(null)
4
환자명병동명
강민본관3
남궁솔별관5
표지안(null)
하율(null)
해설

(+) 는 값이 없을 수 있는 병동 쪽에 붙었으므로 입원 LEFT OUTER JOIN 병동 과 같고, 퇴원일 조건은 기준 테이블 열이라 WHERE 필터로 적용된다.

퇴원한 오라는 걸러지고, 없는 병동코드 W8 인 표지안과 병동코드가 NULL 인 하율은 병동명이 NULL 인 채 남아 4행이 된다.

  • 2행 결과는 짝 없는 입원 행을 버린 INNER JOIN 이다.
  • 신관7 이 나온 결과는 병동을 기준 테이블로 잘못 본 것이다.
  • 오라가 포함된 결과는 퇴원일 조건을 무시한 것이다.

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

이어서 풀어보기

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