데이터를 필터링할 때 사용하는 WHERE 절은 단순 조건 하나만 쓸 수도 있지만,
복수 조건을 조합할 수도 있음. 이때는 AND, OR, BETWEEN, 그리고 괄호() 사용이 중요함.
기본 구조
SELECT ...
FROM 테이블
WHERE 조건식;
조건 여러 개 조합하기
WHERE AGE >= 20 AND AGE <= 29;
WHERE GENDER = 1 OR AGE IS NULL;
- AND: 모든 조건이 참일 때만 해당 행 선택
- OR: 하나라도 참이면 해당 행 선택
논리 연산자 우선순위
연산자 우선순위 설명
| () | 가장 높음 | 괄호 먼저 계산 |
| NOT | 1순위 | 부정 처리 |
| AND | 2순위 | 논리곱 |
| OR | 3순위 | 논리합 |
→ 복잡한 조건은 괄호를 사용해서 정확하게 표현해야 함
BETWEEN으로 범위 조건 쓰기
WHERE AGE BETWEEN 20 AND 29;
- AGE >= 20 AND AGE <= 29 와 동일
- 양쪽 경계값 포함
예제
SELECT COUNT(*)
FROM USER_INFO
WHERE JOINED BETWEEN TO_DATE('2021-01-01', 'YYYY-MM-DD') AND TO_DATE('2021-12-31', 'YYYY-MM-DD')
AND AGE BETWEEN 20 AND 29;
JOINED 날짜 범위 조건 + AGE 범위 조건을 AND로 결합하여 필터링함
주의할 점
- 괄호 없이 AND, OR를 혼용하면 결과가 달라질 수 있음
예:→ B = 2 AND C = 3이 먼저 평가됨 - WHERE A = 1 OR B = 2 AND C = 3
- 항상 괄호를 써서 논리를 명확히 표현하는 것이 안전함
SELECT *
FROM USER_INFO
WHERE (GENDER = 1 OR GENDER = 0) AND (AGE >= 20 AND AGE <= 29);
'DB > Oracle - SQL' 카테고리의 다른 글
| Oracle SQL | TO_DATE로 날짜 왜곡되는 이유와 해결법 (0) | 2025.05.08 |
|---|---|
| Oracle SQL | TO_DATE로 날짜 필터링할 때 오류 방지하는 방법 (0) | 2025.05.06 |
| Oracle SQL | NVL / NVL2 / DECODE 함수로 NULL을 다루는 방법 (0) | 2025.05.06 |
| Oracle SQL | SQL 실행 순서 (0) | 2025.05.06 |
| Oracle SQL | 가장 최근에 들어온 데이터 1개 or n개만 뽑고 싶을 때 (0) | 2025.05.06 |