자격증/정보처리기사 실기 - 기출문제
[정보처리기사 실기] 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 | 영업부 |
30 | 개발부 |
<직원>
직원코드 | 부서코드 | 직원명 |
1001 | 10 | 이진수 |
1002 | 10 | 곽연경 |
1006 | 30 | 박종일 |
1007 | 30 | 박미경 |
② 부서에서 부서코드가 20인 튜플을 삭제하면
ON DELETE CASCADE 로 인해 직원 테이블에서도 삭제된다
따라서 직원 테이블의 남은 수는 4이고
이는 중복 없이 4가 된다