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가 없으면 자식 행이 참조 중인 부모 행은 참조 무결성 위반으로 삭제가 거부된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.