문제
다음 중 [회원] 테이블에서 '나이' 필드의 값이 20 이상 30 이하이고, '이름' 필드에서 성이 김씨인 회원을 검색하는 SQL 문으로 옳은 것은?
① SELECT * FROM 회원 WHERE 나이 <= 30 And 나이 >= 20 And 이름 = "김"; ② SELECT * FROM 회원 WHERE 나이 <= 30 And >= 20 Or 이름 like "김"; ③ SELECT * FROM 회원 WHERE 나이 <= 30 Or 나이 >= 20 And 이름 = "김*"; ④ SELECT * FROM 회원 WHERE 나이 Between 20 And 30 And 이름 like "김*";
정답
4번
해설
정답: 4. 나이가 20~30 사이는 Between 20 And 30으로, 성이 김씨(김으로 시작)는 Like "김*"로 표현한다. 두 조건을 And로 묶은 4번이 옳다.
오답 풀이
- 1번: 이름 = "김"은 이름이 정확히 '김'인 경우만 찾아 성이 김씨인 회원을 못 찾으므로 옳지 않다.
- 2번: '나이 <= 30 And >= 20'은 비교 대상 필드가 빠진 잘못된 구문이고 Or 결합도 부적절하다.
- 3번: Or로 묶여 조건이 잘못 연결되고 = "김*"는 와일드카드가 Like 없이 동작하지 않는다.
- 4번: Between으로 범위, Like "김*"로 성 김씨를 정확히 표현하므로 옳다.
보충 개념 Access SQL에서 범위는 Between A And B, 패턴 검색은 Like와 와일드카드(*: 임의 문자열)를 사용한다. Like 없이 *를 쓰면 패턴으로 동작하지 않는다.