문제
다음 중 <도서> 테이블에서 정가 필드의 값이 10000 이상이면서 20000 이하인 도서를 검색하기 위한 SQL문으로 옳은 것은?
① SELECT * FROM 도서 WHERE 정가 IN (10000, 20000) ② SELECT * FROM 도서 WHERE 정가 > 10000 OR 정가 < 20000 ③ SELECT * FROM 도서 WHERE 10000 <= 정가 <= 20000 ④ SELECT * FROM 도서 WHERE 정가 BETWEEN 10000 AND 20000
정답
4번
해설
정답: 4. '10000 이상이면서 20000 이하'는 두 경계를 포함하는 범위 조건이므로 정가 BETWEEN 10000 AND 20000으로 표현한다.
오답 풀이
- 1번: IN (10000, 20000)은 정확히 10000 또는 20000인 값만 찾으므로 범위 검색이 아니다.
- 2번:
> 10000 OR < 20000은 사실상 모든 값을 포함하고 경계값도 누락되어 옳지 않다. - 3번: SQL에서는
10000 <= 정가 <= 20000같은 연쇄 비교를 쓸 수 없다. - 4번: BETWEEN A AND B는 A 이상 B 이하를 포함하므로 옳다.
보충 개념
BETWEEN A AND B는 >= A AND <= B와 동일하며 양 끝값을 포함한다. SQL은 연쇄 비교(a<=x<=b)를 지원하지 않으므로 AND로 나눠야 한다.