SQLD · 60회 변형 · 어려움 난이도 · 25번

Q.25202660어려움 변형2과목 · SQL 기본 및 활용
아래 두 테이블과 SQL에 대한 설명으로 가장 적절한 것은? (단, ORDERS 테이블의 컬럼에는 어떠한 제약조건도 정의되어 있지 않다)
보기
[PRODUCT]
PROD_CD
P10
P20
P30
[ORDERS]
CUST_IDPROD_CD
C01P10
C02P20
C02P30
SELECT PROD_CD
  FROM PRODUCT
 WHERE PROD_CD = (SELECT PROD_CD
                    FROM ORDERS
                   WHERE CUST_ID = 'C02');
  • 1= 연산자는 서브쿼리 결과 중 첫 번째 행과 비교되므로 PROD_CD 'P20' 1건이 조회된다.
  • 2ORDERS.CUST_ID에 NOT NULL 제약조건을 추가하면 'C02'의 중복 입력이 차단되므로 이후 동일한 오류를 방지할 수 있다.
  • 3서브쿼리가 2건(P20, P30)을 반환하여 실행 오류가 발생하며, 이를 원천적으로 방지하려면 ORDERS.CUST_ID 컬럼에 UNIQUE 제약조건이 필요하다.
  • 4ORDERS.CUST_ID가 고객 테이블의 기본키를 참조하는 FOREIGN KEY로 선언되어 있다면 참조 무결성에 의해 서브쿼리는 항상 1건 이하만 반환한다.

정답: 3 · 서브쿼리가 2건(P20, P30)을 반환하여 실행 오류가 발생하며, 이를 원천적으로 방지하려면 ORDERS.CUST_ID 컬럼에 UNIQUE 제약조건이 필요하다.

해설
해설 불러오는 중…
이 회차 문제 풀어보기 →SQLD 더 풀기