데이터베이스 기초

고객 표(고객ID, 이름)에는 (C1, 아오키), (C2, 이노우에), (C3, 우에다), (C4, 에토)의 4개 행이 있다. 주문 표(주문ID, 고객ID, 금액)에는 (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000)의 5개 행이 있다. SELECT 이름 FROM 고객 WHERE 고객ID IN (SELECT 고객ID FROM 주문 WHERE 금액 > 5000)의 결과는 몇 행이 되는가?

  1. A1행
  2. B2행
  3. C3행
정답과 해설 보기

정답: B. 2행

먼저 괄호 안의 부질의(서브쿼리)가 금액이 5000을 넘는 주문의 고객ID를 반환합니다. 해당하는 것은 O2(C2), O3(C1), O5(C2)의 3건이므로 고객ID의 모음은 C2, C1, C2입니다. 바깥 질의는 고객 표의 각 행에 대해 고객ID가 이 모음에 포함되는지를 조사합니다. 포함되는 것은 아오키(C1)와 이노우에(C2)이며, 이노우에는 모음에 두 번 나타나도 고객 표의 한 행으로서 한 번만 반환되므로 결과는 2행입니다. 3행은 고객 표와 주문 표를 조인한 뒤 금액으로 좁힌 경우처럼, 해당하는 주문의 건수만큼 행이 생긴다고 생각한 경우의 수입니다. 1행은 모든 주문이 5000을 넘는 고객(이노우에)만 센 경우의 수입니다.

이 분야 연습하기 분야로 돌아가기

데이터베이스 기초의 다른 문제

  1. 고객 표(고객ID, 이름)와 주문 표(주문ID, 고객ID, 금액)에서 한 번도 주문하지 않은 고객의 이름을 구하려고 한다. 올바른 SQL 문은?
  2. 관계형 데이터베이스의 뷰에 대한 설명으로 올바른 것은?
  3. 관계형 데이터베이스의 표를 정규화하는 주된 목적은?
  4. 수주 표(수주번호, 상품번호, 수량, 고객번호, 고객명)의 기본 키는 {수주번호, 상품번호}이고, 함수 종속은 {수주번호, 상품번호} → 수량, 수주번호 → 고객번호, 고객번호 → 고객명이다. 이 표를 제3정규형까지 정규화한 결과로 올바른 것은?
  5. 사원 표(사원번호, 이름, 부서코드, 부서명)의 기본 키는 사원번호이며, 모든 열은 하나의 값만 가진다. 함수 종속은 사원번호 → 이름, 사원번호 → 부서코드, 부서코드 → 부서명이다. 이 표의 정규형으로 올바른 것은?