| 논리 연산자 | 정의 |
|---|---|
| A AND B | A와 B 모두 만족하는 경우 TRUE |
| A OR B | A 또는 B 중 하나 이상 만족하는 경우 TRUE |
| NOT A | A를 만족하지 않아야 TRUE |
| IN (A, B, C) | 조건값이 A, B, C 중에 있으면 TRUE |
| BETWEEN A AND B | 조건값이 A와 B 범위 내(포함)라면 TRUE |
| LIKE A% | 조건값이 A%라는 패턴(규칙)에 맞으면 TRUE |
참고
대부분의 SQL 데이터베이스(MySQL, MariaDB 등)에서는 이런 논리/비교 연산의 결과를 1(참, TRUE) 또는 0(거짓, FALSE)로 반환합니다.
sql
코드 복사
SELECT 3 IN (0,1,2,3); -- 결과: 1 (TRUE)
SELECT NOT (3 IN (0,1,2,3)); -- 결과: 0 (FALSE)
3 IN (0,1,2,3)는 숫자 3이 지정된 목록(0,1,2,3)에 있는지 확인합니다. 있으므로 참(1).NOT (3 IN (0,1,2,3))는 위 결과를 뒤집은 것이므로 거짓(0)이 됩니다.IN 은 여러 OR 조건을 한 번에 간단히 표현할 수 있어 유용합니다.WHERE department IN ('Sales', 'Research & Development')는 WHERE department = 'Sales' OR department = 'Research & Development'와 동일합니다.sql
코드 복사
SELECT 10 BETWEEN 1 AND 10; -- 결과: 1 (TRUE)
BETWEEN A AND B는 A 이상 B 이하(포함) 범위에 들어가면 TRUE를 반환합니다.sql
코드 복사
SELECT 5=5 AND 4=5; -- 결과: 0 (FALSE)
SELECT 5=5 OR 4=5; -- 결과: 1 (TRUE)
sql
코드 복사
SELECT 'Apple' LIKE 'A%'; -- 결과: 1 (TRUE)
SELECT 'Apple' LIKE 'A%e'; -- 결과: 1 (TRUE)
SELECT 'Apple' LIKE 'A%p'; -- 결과: 0 (FALSE)
'Apple' LIKE 'A%' : 문자열이 'A'로 시작하면 참. “Apple”은 ‘A’로 시작하므로 TRUE.'Apple' LIKE 'A%e' : 'A'로 시작하고 뒤에 어떤 문자들이 오다가 'e'로 끝나면 참. “Apple”은 A로 시작, e로 끝나므로 TRUE.'Apple' LIKE 'A%p' : 'A'로 시작하고 마지막 문자가 p여야 함. 실제로 마지막 문자는 'e'이므로 FALSE.SQL에서 논리 연산자를 가장 많이 사용하는 곳은 WHERE 절입니다.
아래는 간단한 예시로, 특정 조건에 맞는 직원의 인원을 조회하는 쿼리입니다.
시나리오
- 최소 5년 이상 재직 중 (
YearsAtCompany >= 5)- 나이 30살 이상 45살 이하 (
Age BETWEEN 30 AND 45)- JobLevel이 3 또는 4 (
JobLevel BETWEEN 3 AND 4)- Department가 ‘Sales’ 혹은 ‘Research & Development’ 인 직원 (HR 제외)
- 현재 재직 중(
Attrition = 'No')
아래와 같이 쿼리를 작성할 수 있습니다:
sql
코드 복사
SELECT COUNT(*)
FROM hr.hr_employee_attrition hea
WHERE 1=1
AND Attrition = 'No'
AND YearsAtCompany >= 5
AND Age BETWEEN 30 AND 45
AND JobLevel BETWEEN 3 AND 4
AND Department IN ('Sales', 'Research & Development');
Attrition = 'No' : 퇴사하지 않은(재직 중인) 직원만 선택YearsAtCompany >= 5 : 근속년수가 5년 이상Age BETWEEN 30 AND 45 : 나이가 30~45세 사이JobLevel BETWEEN 3 AND 4 : JobLevel이 3 혹은 4인 직원Department IN ('Sales', 'Research & Development') : 해당 부서만 조회WHERE 1=1
- 늘 참(True)이므로 뒤에 AND로 조건을 계속 추가하는 관용적인 기법입니다.
- 쿼리를 작성할 때 조건을 줄바꿈하며 붙이기 편하고, 가독성이 좋아집니다.
NOT IN, NOT BETWEEN 등).