모두CBT

22-3[부서]와 [사원] 테이블이 아래와 같고, 다음 조건으로 생성되… | 2022년 정보처리기사실기 3회차 기출문제 상세 페이지

6

22-3

[부서]와 [사원] 테이블이 아래와 같고, 다음 조건으로 생성되어 있다. 쿼리 ①과 ②의 실행 결과를 각각 적으시오(②는 DELETE 문 실행 후 SELECT 문의 결과).

  • [부서] 테이블의 부서번호는 기본키(PRIMARY KEY)이다.
  • [사원] 테이블의 부서번호는 [부서] 테이블의 부서번호를 참조하는 외래키(FOREIGN KEY)이며, ON DELETE CASCADE 옵션이 지정되어 있다.

[부서]

부서번호부서명
101인사팀
102개발팀
103재무팀
104홍보팀

[사원]

사번이름부서번호
1강서준101
2윤채아101
3조민혁102
4신예린102
5류태오102
6남하윤104
7권도현104
8임소율104
① SELECT COUNT(DISTINCT 부서번호) FROM 사원;

② DELETE FROM 부서 WHERE 부서번호 = 102;
   SELECT COUNT(DISTINCT 사번) FROM 사원;
해설

① 3

② 5


[해설]

COUNT(DISTINCT 열)은 그 열에 실제로 들어 있는 서로 다른 값의 개수를 센다.

첫 쿼리는 [사원]에 나오는 부서번호 101, 102, 104만 세므로 결과가 3이다. 사원이 없는 103은 [부서]에만 있어서 세지 않는다.

부서 102를 삭제하면 ON DELETE CASCADE에 따라 그 부서를 참조하던 사번 3, 4, 5도 함께 삭제된다. 남은 사번은 1, 2, 6, 7, 8이므로 결과는 5다.

혼동 주의: CASCADE가 없으면 자식 행이 참조 중인 부모 행은 참조 무결성 위반으로 삭제가 거부된다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.