다음 UPDATE 문을 실행한 결과로 옳은 것은?[예약]예약번호승객번호… | [SQLD] SQL 개발자 기출유형 모의고사 4회 상세 페이지

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

[예약]

예약번호승객번호등급
110일반
220일반
330일반
440일반

[승객]

승객번호등급
10골드
20실버
30골드
UPDATE 예약 R
   SET 등급 = (SELECT P.등급
                 FROM 승객 P
                WHERE P.승객번호 = R.승객번호);
1
짝이 없는 행 때문에 오류가 발생한다
2
3행만 갱신되고 1행은 원래 값이 남는다
3
4행 모두 갱신되고 1행은 NULL 이 된다
4
짝이 없는 행은 삭제되어 3행만 남는다
해설

WHERE 절이 없으므로 예약 4행 모두가 갱신 대상이며, 승객 테이블에 40번이 없는 예약 4는 서브쿼리가 0행이라 NULL 로 갱신된다.

값이 없는 스칼라 서브쿼리는 오류가 아니라 NULL 을 돌려준다. 짝이 있는 행만 바꾸려면 WHERE EXISTS 조건을 함께 써야 한다.

  • 짝 없는 행도 대상에 포함되므로 원래 값이 그대로 남지 않는다.
  • 서브쿼리 결과가 0행이면 오류 없이 NULL 이 된다.
  • UPDATE 는 행을 지우지 않으므로 4행이 그대로 있다.

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

이어서 풀어보기

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