DB

[MySQL] SELECT WHERE 조건절 완벽 정리

인생아 2025. 6. 24. 13:34
반응형

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

반응형