반응형
MySQL에서 데이터를 조회할 때 가장 많이 쓰이는 구문 중 하나가 바로 WHERE 조건절이다.
단순히 전체 데이터를 불러오는 것이 아니라,
조건에 맞는 데이터만 필터링하여 가져오는 역할을 한다.

📌 WHERE 조건절이란?
WHERE는 SELECT 문에서 특정 조건에 해당하는 행만 조회할 때 사용된다.
조건에 맞지 않는 데이터는 결과에서 제외된다.
기본 구문은 다음과 같다:
SELECT 컬럼명 FROM 테이블명 WHERE 조건;
예를 들어, users 테이블에서 나이가 30살 이상인 사용자만 조회하고 싶다면:
SELECT * FROM users WHERE age >= 30;
반응형
🔍 자주 사용되는 비교 연산자
| 연산자 | 의미 | 예시 |
| = | 같다 | age = 25 |
| != | 같지 않다 | name != '홍길동' |
| > | 크다 | age > 30 |
| < | 작다 | age < 50 |
| >= | 크거나 같다 | age >= 20 |
| <= | 작거나 같다 | age <= 40 |
🎯 AND / OR 연산자 활용
두 개 이상의 조건을 동시에 처리할 수 있다.
SELECT * FROM users WHERE age > 20 AND gender = 'M';
- 20살 초과면서 남자인 사용자만 조회
SELECT * FROM users WHERE city = '서울' OR city = '부산';
- 서울 또는 부산에 거주하는 사용자만 조회
반응형
🔄 BETWEEN … AND 구문
숫자나 날짜 범위를 지정할 때 매우 유용하다.
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
- 나이가 20세 이상 30세 이하인 사용자만 조회
🔡 LIKE로 부분 문자열 검색
SELECT * FROM users WHERE name LIKE '김%';
- 김으로 시작하는 이름을 가진 사용자 조회
- %는 와일드카드로, 0개 이상의 문자를 의미
SELECT * FROM users WHERE email LIKE '%@naver.com';
- 네이버 이메일을 사용하는 사용자만 조회
📦 IN 조건으로 여러 값 비교
SELECT * FROM users WHERE city IN ('서울', '부산', '대구');
- 여러 조건을 OR로 연결하는 것보다 간결하고 빠르다
반응형
❓ IS NULL / IS NOT NULL
값이 비어있는지 확인하는 조건이다.
SELECT * FROM users WHERE phone IS NULL;
- 전화번호 정보가 없는 사용자 조회
SELECT * FROM users WHERE email IS NOT NULL;
- 이메일이 등록된 사용자만 조회
🧠 복합 조건 예제
SELECT name, age, city
FROM users
WHERE age BETWEEN 20 AND 40
AND city IN ('서울', '인천')
AND email IS NOT NULL
ORDER BY age ASC
LIMIT 10;
- 이 쿼리는 다음 조건을 만족하는 사용자 10명을 조회한다:
- 나이가 20세 이상 40세 이하
- 거주지는 서울 또는 인천
- 이메일 정보가 있음
- 나이 오름차순 정렬
⚠️ WHERE 조건절 주의사항
- WHERE 조건을 잘못 지정하면 원하지 않는 결과가 조회되거나 너무 많은 데이터가 추출될 수 있음
- NULL 값은 = NULL이 아니라 IS NULL로 비교해야 함
- 인덱스를 활용하고 싶다면 OR보다는 IN이나 UNION을 사용하는 것이 성능에 유리함
📎 공식 문서 참고
MySQL SELECT + WHERE 문법 공식 가이드
https://dev.mysql.com/doc/refman/8.0/en/select.html
반응형
'DB' 카테고리의 다른 글
| [MySQL] SELECT DISTINCT – 중복된 데이터 없이 깔끔하게 조회하는 법 (0) | 2025.06.25 |
|---|---|
| [MySQL] SELECT LIMIT / OFFSET (행의 개수 제한 / 페이징 처리) (0) | 2025.06.24 |
| [MySQL] SELECT GROUP BY + HAVING (그룹화와 조건 필터링) (0) | 2025.06.24 |
| [MySQL] SELECT ORDER BY 정렬 방법 완벽 정리 (0) | 2025.06.24 |
| [MySQL] SELECT 기본 조회 방법 완벽 정리 (0) | 2025.06.24 |
| [MySQL] 대량 INSERT 성능 최적화 방법 완벽 정리 (1) | 2025.06.20 |
| [MySQL] REPLACE VS INSERT 차이점 완벽 정리 (0) | 2025.06.20 |
| [MySQL] INSERT + AUTO_INCREMENT 사용법 완벽 가이드 (0) | 2025.06.20 |