자격증/정보처리기사 실기 - 기출문제

[정보처리기사 실기] 2022년 3회 07 - SQL

쏠솔랄라 2025. 7. 23. 16:27

 

 

 

17 다음과 같이 테이블을 정의 하고 튜플을 삽입하였을 때 각 번호(①, ②)의 SQL문을 실행한 결과를 쓰시오.

CREATE TABLE 부서 (
	부서코드 INT PRIMARY KEY,
	부서명 VARCHAR (20) 
);

CREATE TABLE 직원 (
	직원코드 INT PRIMARY KEY,
	부서코드 INT,
	직원명 VARCHAR(20),
	FOREIGN KEY(부서코드) REFERENCES 부서(부서코드)
		ON DELETE CASCADE
);

INSERT INTO 부서 VALUES(10, '영업부');
INSERT INTO 부서 VALUES(20, '기획부');
INSERT INTO 부서 VALUES(30, '개발부');

INSERT INTO 직원 VALUES(1001, 10, '이진수');
INSERT INTO 직원 VALUES(1002, 10, '곽연경');
INSERT INTO 직원 VALUES(1003, 20, '김선길');
INSERT INTO 직원 VALUES(1004, 20, '최민수');
INSERT INTO 직원 VALUES(1005, 20, '이용갑');
INSERT INTO 직원 VALUES(1006, 30, '박종일');
INSERT INTO 직원 VALUES(1007, 30, '박미경');
① SELECT DISTINCT COUNT(부서코드) FROM 직원 WHERE 부서코드=20;
② DELETE FROM 부서 sWHERE 부서코드=20;
     SELECT DISTINCT COUNT(부서코드) FROM 직원;

 

 

 

더보기

① 3

② 4

 

 

 

해설

 

'ON DELETE CASCADE 관련된 모든 튜플을 함께 삭제한다'

이 구문의 DISTINCT는 COUNT 자체에 대해 수행하기 때문에 중복이 없다

 

<부서>

부서코드 부서명
10 영업부
20 기획부
30 개발부

 

<직원>

직원코드 부서코드 직원명
1001 10 이진수
1002 10 곽연경
1003 20 김선길
1004 20 최민수
1005 20 이용갑
1006 30 박종일
1007 30 박미경

① 직원 테이블에서 부서코드가 20인 튜플의 수는 3이다

 

<부서>

부서코드 부서명
10 영업부
20 기획부
30 개발부

 

<직원>

직원코드 부서코드 직원명
1001 10 이진수
1002 10 곽연경
1003 20 김선길
1004 20 최민수
1005 20 이용갑
1006 30 박종일
1007 30 박미경

 

② 부서에서 부서코드가 20인 튜플을 삭제하면

ON DELETE CASCADE 로 인해 직원 테이블에서도 삭제된다

따라서 직원 테이블의 남은 수는 4이고

이는 중복 없이 4가 된다