논리 연산자

Ryan·2025년 1월 15일

SQL/Python 분석

목록 보기
51/94

1. 주요 논리 연산자와 의미

논리 연산자정의
A AND BA와 B 모두 만족하는 경우 TRUE
A OR BA 또는 B 중 하나 이상 만족하는 경우 TRUE
NOT AA를 만족하지 않아야 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)로 반환합니다.


2. SELECT 절에서 연산자 사용 예시

2-1. IN, NOT IN 예시

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'와 동일합니다.

2-2. BETWEEN 예시

sql
코드 복사
SELECT 10 BETWEEN 1 AND 10;    -- 결과: 1 (TRUE)
  • 1과 10 범위 사이(포함 여부)에 10이 존재하기 때문에 참이 됩니다.
  • BETWEEN A AND B는 A 이상 B 이하(포함) 범위에 들어가면 TRUE를 반환합니다.

2-3. AND, OR 예시

sql
코드 복사
SELECT 5=5 AND 4=5;            -- 결과: 0 (FALSE)
SELECT 5=5 OR 4=5;             -- 결과: 1 (TRUE)
  • 첫 번째는 두 조건(5=5, 4=5)을 모두 만족해야 하지만, 4=5가 거짓이므로 전체 결과는 거짓(0).
  • 두 번째는 OR 조건이므로, 5=5가 참이어서 전체 결과는 참(1)이 됩니다.

2-4. LIKE 예시

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.

3. WHERE 절에서의 활용 예시

SQL에서 논리 연산자를 가장 많이 사용하는 곳은 WHERE 절입니다.

아래는 간단한 예시로, 특정 조건에 맞는 직원의 인원을 조회하는 쿼리입니다.

3-1. 사내 대리/과장급 직원 교육 대상자 조회 예시

시나리오

  1. 최소 5년 이상 재직 중 (YearsAtCompany >= 5)
  2. 나이 30살 이상 45살 이하 (Age BETWEEN 30 AND 45)
  3. JobLevel이 3 또는 4 (JobLevel BETWEEN 3 AND 4)
  4. Department가 ‘Sales’ 혹은 ‘Research & Development’ 인 직원 (HR 제외)
  5. 현재 재직 중(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로 조건을 계속 추가하는 관용적인 기법입니다.
  • 쿼리를 작성할 때 조건을 줄바꿈하며 붙이기 편하고, 가독성이 좋아집니다.

4. 정리 & 추가 팁

  • AND/OR: 여러 조건을 조합해 결과를 좁히거나 넓히는 핵심 연산자.
  • IN: 여러 OR 조건을 더 간결하게 표현할 때 유리.
  • BETWEEN A AND B: A 이상 B 이하 범위 체크, 날짜/숫자 범위를 쉽게 필터링 가능.
  • LIKE: 문자열 패턴 매칭(와일드카드 % 또는 _), 원하는 형태의 문자열을 쉽게 검색 가능.
  • NOT: 반대되는 조건을 걸고 싶을 때 사용(NOT IN, NOT BETWEEN 등).

0개의 댓글