다음 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 | 전자 | 서울 |
[성적] 테이블
| 학번 | 과목번호 | 과목이름 | 학점 | 점수 |
|---|---|---|---|---|
| 1000 | A100 | 자료구조 | A | 91 |
| 2000 | A200 | DB | A+ | 99 |
| 3000 | A100 | 자료구조 | B+ | 88 |
| 3000 | A200 | DB | B | 85 |
| 4000 | A200 | DB | A | 94 |
| 4000 | A300 | 운영체제 | B+ | 89 |
| 5000 | A300 | 운영체제 | B | 88 |
1
2
3
4
해설
상관 부속 질의의 EXISTS 조건을 만족하는 학번은 2000과 4000뿐이므로, 결과는 과목이름 열에 DB, DB, 운영체제 세 행이 나온다.
학생 테이블에서 학과가 전산 또는 전기이면서 주소가 경기인 학생은 고영준(2000, 전기·경기)과 김영진(4000, 전산·경기)이다. 김철수(1000)는 주소가 서울, 유진호(3000)와 정현영(5000)은 학과가 전자여서 조건을 못 채운다.
성적 테이블에서 학번이 2000인 행은 A200 DB 하나, 4000인 행은 A200 DB와 A300 운영체제 둘이다.
EXISTS는 성적 테이블의 행마다 평가되고 중복을 제거하지 않으므로 DB가 두 번, 운영체제가 한 번 그대로 출력된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.

