문제
다음 WHERE 절의 논리 연산 해석으로 가장 적절한 것은?
SQLWHERE 고객번호 = 'X' OR 고객번호 = 'Y' AND 상태 = '정상' AND 등급 = 'A'
<조건> 고객번호가 X인 행은 2건이고, 고객번호가 Y이면서 상태가 정상이고 등급이 A인 행은 3건이다.
① (고객번호 = 'X' OR 고객번호 = 'Y') AND 상태 = '정상' AND 등급 = 'A'이므로 3건이다. ② 고객번호 = 'X' OR (고객번호 = 'Y' AND 상태 = '정상' AND 등급 = 'A')이므로 5건이다. ③ (고객번호 = 'X' OR 고객번호 = 'Y' OR 상태 = '정상') AND 등급 = 'A'이므로 2건이다. ④ 고객번호 = 'X' AND 고객번호 = 'Y' AND 상태 = '정상' AND 등급 = 'A'이므로 0건이다.
정답
2번
해설
정답: 2. SQL에서 AND가 OR보다 우선순위가 높으므로 고객번호 X 조건 2건과 Y이면서 나머지 조건을 만족하는 3건이 합쳐져 5건이다.
오답 풀이
- 1번: 괄호가 없으면 OR보다 AND가 먼저 처리된다.
- 2번: 올바른 논리 연산 순서와 결과 건수이다.
- 3번: 상태 조건이 OR로 연결되지 않는다.
- 4번: OR 조건을 AND로 잘못 해석했다.
보충 개념 WHERE 절에서 AND는 OR보다 우선순위가 높다. 의도한 조건을 명확히 하려면 괄호를 사용하는 것이 좋다.