문제
다음 중 성적(학번, 이름, 학과, 점수) 테이블의 레코드 수가 10개, 평가(학번, 전공, 점수) 테이블의 레코드 수가 5개일 때, 아래 SQL의 결과에 대한 설명으로 옳은 것은?
① 쿼리 실행 결과의 필드 수는 모든 테이블의 필드를 더한 개수만큼 검색된다. ② 쿼리 실행 결과의 총 레코드 수는 15개이다. ③ 쿼리 실행 결과의 필드는 평가.학번, 평가.전공, 평가.점수이다. ④ 쿼리 실행 결과는 학번의 내림차순으로 정렬되어 표시된다.
정답
2번
해설
정답: 2. UNION ALL은 두 결과 집합을 중복 제거 없이 그대로 합치므로, 레코드 수는 10+5=15개가 된다.
오답 풀이
- 1번: UNION은 필드를 더하는 것이 아니라 같은 개수(3개)의 열을 위아래로 합치므로 옳지 않다.
- 2번: UNION ALL은 중복을 제거하지 않아 총 15개 레코드가 되므로 옳다.
- 3번: 결과의 필드 이름은 첫 번째 SELECT(성적)의 열 이름(학번·학과·점수)을 따르므로 옳지 않다.
- 4번: ORDER BY 학번에 DESC가 없으므로 오름차순으로 정렬되어 내림차순은 옳지 않다.
보충 개념 UNION은 중복을 제거하고, UNION ALL은 중복을 포함한다. 결합되는 두 SELECT의 열 개수와 데이터 형식이 호환되어야 하며, 결과 열 이름은 첫 SELECT를 따른다.