목차
WHERE 절
WHERE 절은 테이블에서 조건에 맞는 행(row)만 필터링하는 구문이다.
SELECT, UPDATE, DELETE 문에서 사용되며, 조건을 만족하는 데이터만 결과에 포함되거나, 수정 또는 삭제 대상으로 지정된다.
✅ 기본 문법
SELECT 컬럼명
FROM 테이블명
WHERE 조건;
✅ 사용 가능한 조건 종류
비교 연산자 | ||
조건 유형 | 예시 | 설명 |
비교 연산자 | =, !=, >, <, >=, <= | 숫자, 문자열, 날짜 비교 |
논리 연산자 | AND, OR, NOT | 조건 여러 개 조합 |
범위 조건 | BETWEEN a AND b | a 이상 b 이하 범휘 |
집합 조건 | IN(a, b, c) | 여러 값 중 하나 포함 여부 |
패턴 조건 | LIKE '%abc%' | 문자열 패턴 검색 |
NULL 조건 | IS NULL, IS NOT NULL | 값 존재 여부 판단 |
✅ WHERE 예제 모음
-- 1. 이름이 '우기'인 사람 찾기
SELECT * FROM users WHERE name = '우기';
-- 2. 나이가 20세 이상인 회원
SELECT * FROM users WHERE age >= 20;
-- 3. 이메일이 gmail.com인 경우
SELECT * FROM users WHERE email LIKE '%@gmail.com';
-- 4. 점수가 60 ~ 80 사이인 경우
SELECT * FROM scores WHERE score BETWEEN 60 AND 80;
-- 5. 부서가 '영업' 또는 '기획'
SELECT * FROM employees WHERE department IN ('영업', '기획');
-- 6. 주소가 없는 사용자 (NULL)
SELECT * FROM users WHERE address IS NULL;
-- 7. 여러 조건 조합
SELECT * FROM users WHERE age > 18 AND gender = 'F';
⚠️ WHERE 주의사항
- 문자열 비교 시 ' (작은 따옴표) 꼭 써야함 -> WHERE name = '우기'
- NULL은 =이 아니라 IS NULL로 비교해야한다.
- 날짜 비교 시 'YYYY-MM-DD' 형식의 문자열로 입력
부정 비교 연산자(Not Comparison Operators)
SQL에서 조건이 '아닌 것'을 표현할 때 사용되는 연산자들로, 보통 NOT, !=, <> 같은 형태를 사용한다.
필자도 <> 처음 알게 되었다..
연산자 | 의미 | 예시 |
!= | 같지 않음 | WHERE age != 30 |
<> | 같지 않음 | WHERE status <> 'active' |
NOT | 부정 | WHERE NOT gender = 'M' |
NOT BETWEEN | 범위 외의 값 | WHERE score NOT BETWEEN 60 AND 80 |
NOT IN | 집합 외의 값 | WHERE dept NOT IN ('영업', '기획') |
IS NOT NULL | NULL이 아닌 값 | WHERE email IS NOT NULL |
논리 연산자(Logical Operators)
연산자 | 의미 | 예시 |
AND | 두 조건 모두 참 | age > 18 AND gender = 'M' |
OR | 둘 중 하나만 참이면 됨 | score < 60 OR grade = 'F' |
NOT | 조건 부정 | NOT status = 'ACTIVE' |
부정 SQL 연산자
연산자 | 의미 | 예시 |
NOT IN | 특정 값 제외 | WHERE region NOT IN ('서울', '부산') |
NOT LIKE | 패턴 부정 | WHERE name NOT LIKE '김%' |
NOT BETWEEN | 범위 외 | WHERE age NOT BETWEEN 20 AND 30 |
IS NOT NULL | 값이 존재함 | WHERE phone IS NOT NULL |
연산자 우선순위 (Operators Precedence)
SQL에서 여러 연산자가 함께 쓰일 경우, 아래 순서로 평가가된다. 괄호()를 쓰면 우선 순위를 직접 지정이 가능하다.
우선순위 | 연산자 | 설명 |
1 | (), IS [NOT] NULL, LIKE, IN, BETWEEN | 괄호 및 기본 비교 |
2 | NOT | 부정 |
3 | *, /, % | 산술 연산 |
4 | +, - | 산술 덧셈/뺄셈 |
5 | =, !=, <>, <, >, <=, >= | 비교 |
6 | AND | 논리 AND |
7 | OR | 논리 OR |
🎯 예제: 우선순위 적용 예
-- AND가 OR보다 우선
SELECT * FROM users
WHERE age > 20 AND gender = 'F' OR region = '서울';
-> 실제 해석 : (age > 20 AND gender = 'F') OR (region = '서울')
- 조건이 많을 땐 괄호로 명확하게 그룹화 해줘야 혼동이 없다.
- 부정 조건(NOT IN, NOT LIKE)은 누락된 데이터 확인에 자중 사용이 된다.
- 비교 연산자는 숫자, 날짜, 문자 전부 적용 가능 (단, 문자열은 따옴표 사용 필수!)
728x90
'SQL > SQLD' 카테고리의 다른 글
#13 ORDER BY (0) | 2025.04.13 |
---|---|
#12 GROUP BY, HAVING 절 (0) | 2025.04.13 |
#10 함수 (0) | 2025.04.10 |
#9 SQL (0) | 2025.04.07 |
#8 트랜잭션과 NULL (0) | 2025.04.07 |