ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Database] SQL WHERE 구문 정리: 정의와 활용 예시
    업무 자동화/Database 2025. 11. 18. 23:40

    1. WHERE 구문의 정의

    • 역할: FROM 절에서 가져온 데이터 중 특정 조건을 만족하는 행(ROW)만 필터링하는 단계
    • 특징:
      - 집계 함수(SUM, COUNT 등) 결과는 아직 존재하지 않으므로 사용할 수 없음
      - 조건식은 행 단위에서만 평가됨
    SELECT *
    FROM orders
    WHERE status = 'PAID' AND order_date >= DATE '2025-01-01';

     

    2. WHERE 구문의 기본 활용 예시

    • 단일 조건: 특정 컬럼 값이 일치하는 행만 조회
    SELECT *
    FROM customer
    WHERE city = 'Seoul';
    • 복합 조건: AND, OR, NOT을 조합해 다양한 조건 처리
    SELECT *
    FROM orders
    WHERE status = 'PAID' OR status = 'SHIPPED';
    • 비교 연산자: =, !=, <, >, <=, >=
    • 패턴 매칭: LIKE, IN, BETWEEN 등 활용 가능

     

    3. 특수 활용 예시: WHERE 1=2

    WHERE 1=2는 항상 거짓(False)이므로 결과가 빈 집합이 됩니다.
    1=2 라는 의미 자체가 항상 거짓이 되는 조건이기 때문에 빈 집합이 결과로 반환되는 것으로 이해하면 쉽습니다.
    반대로 1=1 으로 바꾸어 적용할 경우 '항상 참'의 의미이므로 모든 행이 반환됩니다.
    이 구문은 실무에서 다음과 같이 활용됩니다:

    • 테이블 구조만 확인할 때
    SELECT *
    FROM orders
    WHERE 1=2;

    → 결과는 없지만 컬럼 구조를 확인 가능

    • 동적으로 조건을 추가할 때
    SELECT * 
    FROM orders 
    WHERE 1=1
      AND status = 'PAID'
      AND order_date >= DATE '2025-01-01';

    항상 참이기 때문에 무의미하지만 조건을 붙일 때에는 문법적으로 깔끔해짐

    • INSERT INTO … SELECT 시 초기화 용도
    INSERT INTO temp_orders
    SELECT *
    FROM orders
    WHERE 1=2;

    → 데이터는 복사하지 않고 테이블 구조만 가져옴
    조건을 임시로 막아두는 테스트용
    개발 중 특정 조건을 강제로 False 처리하여 결과를 비워둠

     

    4. 주의사항

    • 집계 함수는 WHERE에서 사용 불가
    • SELECT 별칭은 WHERE에서 사용 불가
      예: WHERE amount_vat > 100000 (별칭 사용) → 오류
      해결: 표현식을 직접 쓰거나 서브쿼리로 감싸기

     

    5. 요약

    • WHERE 구문은 행 단위 필터링 절
    • 집계 결과나 별칭은 사용할 수 없음
    • WHERE 1=2는 구조 확인, 초기화, 테스트용으로 자주 활용
Designed by Tistory.