모두CBT

다음 SQL문의 실행 결과는?SELECT 과목이름FROM 성적WHERE… | 20년-4회차-정보처리기사-필기 기출문제 상세 페이지

120년-4회차-정보처리기사-필기

다음 SQL문의 실행 결과는?

SELECT 과목이름
FROM 성적
WHERE EXISTS (SELECT 학번
FROM 학생 WHERE 학생.학번 = 성적.학번 AND
학생.학과 IN ('전산', '전기') AND
학생.주소 = '경기');

[학생] 테이블

학번이름학년학과주소
1000김철수1전산서울
2000고영준1전기경기
3000유진호2전자경기
4000김영진2전산경기
5000정현영3전자서울

[성적] 테이블

학번과목번호과목이름학점점수
1000A100자료구조A91
2000A200DBA+99
3000A100자료구조B+88
3000A200DBB85
4000A200DBA94
4000A300운영체제B+89
5000A300운영체제B88
1
2

 
3
4

 
해설

상관 부속 질의의 EXISTS 조건을 만족하는 학번은 2000과 4000뿐이므로, 결과는 과목이름 열에 DB, DB, 운영체제 세 행이 나온다.

학생 테이블에서 학과가 전산 또는 전기이면서 주소가 경기인 학생은 고영준(2000, 전기·경기)과 김영진(4000, 전산·경기)이다. 김철수(1000)는 주소가 서울, 유진호(3000)와 정현영(5000)은 학과가 전자여서 조건을 못 채운다.

성적 테이블에서 학번이 2000인 행은 A200 DB 하나, 4000인 행은 A200 DB와 A300 운영체제 둘이다.

EXISTS는 성적 테이블의 행마다 평가되고 중복을 제거하지 않으므로 DB가 두 번, 운영체제가 한 번 그대로 출력된다.

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