모두CBT

다음 ‘고객’ 테이블과 ‘주문’ 테이블에서 아래에 주어진 SQL문과 동… | [7급 국가직 데이터베이스론] 25년 1회차 기출문제 상세 페이지

1[7급 국가직 데이터베이스론] 25년 1회차
다음 ‘고객’ 테이블과 ‘주문’ 테이블에서 아래에 주어진 SQL문과 동일한 결과를 출력하는 SQL문은? (단, 밑줄 속성은 기본키이며, ‘주문’ 테이블의 고객번호는 ‘고객’ 테이블의 번호를 참조하는 외래키이다)
고객
번호이름성별
1001김홍도M
1002허균M
1003유관순F
주문
고객번호제품번호개수
1001AA1
1003AA1
1001BA2
SELECT 이름, 제품번호, 개수
FROM 고객, 주문
WHERE 번호 = 고객번호
ORDER BY 이름, 제품번호;
1
SELECT 이름, 제품번호, 개수
FROM 고객 OUTER JOIN 주문
ON 번호 = 고객번호
ORDER BY 이름, 제품번호;
2
SELECT 이름, 제품번호, 개수
FROM 고객 RIGHT OUTER JOIN 주문
ON 번호 = 고객번호
ORDER BY 이름, 제품번호;
3
SELECT 이름, 제품번호, 개수
FROM 고객 LEFT OUTER JOIN 주문
ON 번호 = 고객번호
ORDER BY 이름, 제품번호;
4
SELECT 이름, 제품번호, 개수
FROM 고객, 주문
WHERE 번호 IN (SELECT 고객번호 FROM 주문)
ORDER BY 이름, 제품번호;
해설

같은 결과를 내는 것은 RIGHT OUTER JOIN 문장이다.

원래 문장은 내부 조인으로 (김홍도, AA, 1), (김홍도, BA, 2), (유관순, AA, 1) 세 행을 낸다.
주문의 고객번호는 외래키라 모든 주문이 고객과 짝지어지므로, 주문 쪽을 보존하는 오른쪽 외부 조인도 추가 행 없이 같은 세 행이 된다.

  • 방향 없는 OUTER JOIN: 표준 SQL은 LEFT·RIGHT·FULL을 지정해야 하며, FULL로 보더라도 주문 없는 허균 행이 추가된다.
  • LEFT OUTER JOIN: 주문이 없는 허균이 제품번호·개수 NULL로 추가되어 네 행이 된다.
  • WHERE 번호 IN 서브쿼리: 조인 조건 없이 카티션 곱을 거르므로 김홍도·유관순이 주문 3건 모두와 결합해 여섯 행이 된다.

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

이어서 풀어보기

[7급 국가직 데이터베이스론] 25년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 데이터베이스론 기출문제 암기장 전체 보기