문제
다음 중 SQL문의 각 예약어에 대한 설명으로 옳지 않은 것은?
① SQL문에서 검색 결과가 중복되지 않게 표시하기 위해서 'DISTINCT' 를 입력한다. ② ORDER BY문을 사용할 때에는 HAVING절을 사용하여 조건을 지정한다. ③ FROM절에는 SELECT문에 나열된 필드를 포함하는 테이블이나 쿼리를 지정한다. ④ 특정 필드를 기준으로 그룹화하여 검색할 때에는 GROUP BY문을 사용한다.
정답
2번
해설
정답: 2. HAVING절은 ORDER BY가 아니라 GROUP BY로 그룹화한 결과에 조건을 지정할 때 사용한다. ORDER BY는 단순히 정렬을 지정하는 절로 HAVING과 무관하다.
오답 풀이
- 1번: DISTINCT는 중복 행을 제거해 표시하므로 옳다.
- 2번: HAVING은 GROUP BY와 함께 쓰이며 ORDER BY와는 무관하므로 옳지 않다.
- 3번: FROM절에는 조회 대상 테이블·쿼리를 지정하므로 옳다.
- 4번: GROUP BY는 특정 필드 기준 그룹화에 사용하므로 옳다.
보충 개념 WHERE는 그룹화 전 행 조건, HAVING은 GROUP BY 후 그룹 조건을 지정한다. 절의 순서는 SELECT→FROM→WHERE→GROUP BY→HAVING→ORDER BY이다.