-
[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는 구조 확인, 초기화, 테스트용으로 자주 활용
'업무 자동화 > Database' 카테고리의 다른 글
[Database] MongoDB 기본 개념과 용어 정리 - 2 (0) 2025.12.11 [Database] RDB vs NoSQL - 1 (0) 2025.12.09 [Database] SELECT 문 실행 순서 (0) 2025.11.16 [Database] SQL 서브쿼리(Subquery) 정리: 개념, 위치별 활용 (0) 2025.11.15 [Database] SQL JOIN 총정리: INNER/OUTER/SEMI/ANTI/CROSS, NATURAL/USING, UNION (0) 2025.11.14