SQL에서 데이터를 조회할 때 가장 많이 사용되는 문법 중 하나가 바로 WHERE 조건문입니다. WHERE은 특정 조건을 만족하는 행만 선택하여, 불필요한 데이터를 거르고, 원하는 결과만 가져오는 데 사용됩니다. 이 글에서는 SQL에서 자주 쓰이는 WHERE 조건문을 연산자별로 정리하고, 각 조건별로 실제 예제를 통해 쉽게 이해할 수 있도록 설명하겠습니다. SQL 초보자부터 실무자까지 모두에게 유용한 필터링 기술을 함께 정리해보죠!
WHERE 기본 문법
SELECT column1, column2
FROM table_name
WHERE condition;
WHERE절은 SELECT, UPDATE, DELETE 등 다양한 SQL 문에서 조건을 설정하는 데 사용됩니다.
비교 연산자
📌 = (같다)
SELECT * FROM users
WHERE age = 30;
👉 나이가 30살인 사용자만 선택합니다.
📌 != 또는 <> (같지 않다)
SELECT * FROM users
WHERE name != 'Alice';
👉 이름이 'Alice'가 아닌 모든 사용자 조회
⚠️ <>도 같지 않다는 의미이며, DBMS마다 둘 중 하나를 사용하거나 둘 다 지원합니다.
📌 >, <, >=, <= (크다/작다/이상/이하)
SELECT * FROM users
WHERE salary >= 5000;
👉 연봉이 5,000 이상인 사용자 조회
SELECT * FROM products
WHERE price < 100;
👉 가격이 100보다 낮은 상품 조회
📌 BETWEEN A AND B (범위 조건)
SELECT * FROM users
WHERE age BETWEEN 20 AND 30;
👉 나이가 20 이상 30 이하인 사용자 조회
📌 IN (여러 값 중 하나일 경우)
SELECT * FROM orders
WHERE status IN ('Shipped', 'Delivered');
👉 배송 상태가 'Shipped' 또는 'Delivered'인 주문 조회
📌 NOT IN (포함되지 않는 경우)
SELECT * FROM users
WHERE city NOT IN ('Seoul', 'Busan');
👉 거주 도시가 서울이나 부산이 아닌 사용자 조회
논리 연산자
📌 AND (모든 조건을 만족할 때)
SELECT * FROM users
WHERE age >= 25 AND city = 'Seoul';
👉 25세 이상이며 서울 거주자인 사용자 조회
📌 OR (하나라도 조건을 만족하면)
SELECT * FROM users
WHERE job = 'Developer' OR job = 'Designer';
👉 직업이 개발자거나 디자이너인 사용자 조회
📌 복합 조건 조합 (괄호 사용)
SELECT * FROM users
WHERE (age < 20 OR age > 60) AND city = 'Busan';
👉 나이가 20 미만 또는 60 초과이면서, 부산 거주자인 사용자 조회
🧠 괄호를 이용하면 조건의 우선순위를 명확히 할 수 있습니다.
문자열 조건
📌 LIKE (패턴 검색)
SELECT * FROM users
WHERE name LIKE 'A%';
👉 이름이 A로 시작하는 사용자 조회 (예: Alice, Adam)
SELECT * FROM users
WHERE email LIKE '%@gmail.com';
👉 이메일이 gmail.com으로 끝나는 사용자 조회
패턴 의미
% 0개 이상의 모든 문자
_ 정확히 1개의 문자
SELECT * FROM users
WHERE name LIKE '_im';
👉 'Kim', 'Lim', 'Tim'과 같이 _im 형식의 이름만 조회
📌 NOT LIKE
SELECT * FROM users
WHERE name NOT LIKE '%son';
👉 이름이 'son'으로 끝나지 않는 사용자 조회
NULL 조건
📌 IS NULL / IS NOT NULL
SELECT * FROM users
WHERE phone IS NULL;
👉 전화번호가 없는 사용자 조회
SELECT * FROM users
WHERE email IS NOT NULL;
👉 이메일이 존재하는 사용자만 조회
❗주의: NULL은 = 또는 !=으로 비교하면 안 됩니다. 반드시 IS NULL, IS NOT NULL을 사용해야 합니다.
조건문 응용 예제
📌 최근 30일간 주문 조회
SELECT * FROM orders
WHERE order_date >= CURDATE() - INTERVAL 30 DAY;
👉 현재 날짜 기준 30일 이내의 주문만 조회
📌 특정 키워드 제외하고 필터링
SELECT * FROM blog_posts
WHERE title NOT LIKE '%광고%';
👉 제목에 '광고'라는 단어가 포함되지 않은 블로그 글만 조회
📌 다양한 조건 조합
SELECT * FROM employees
WHERE (department = 'Sales' OR department = 'Marketing')
AND salary > 4000
AND hire_date >= '2021-01-01';
👉 영업 또는 마케팅 부서 소속이며 연봉이 4000 이상, 2021년 이후 입사한 직원만 조회
🧠 자주 하는 실수 주의
실수 사례 올바른 사용법
WHERE column = NULL ❌ 잘못된 문법
WHERE column IS NULL ✅ 올바른 문법
괄호 없이 복합 조건 작성 ⚠️ 조건 우선순위 오류 가능성 있음
문자열 비교 시 대소문자 구분 문제 DB에 따라 LOWER(column) = 'value' 사용 고려
📌 WHERE 조건은 SQL의 핵심
WHERE 조건문은 단순한 필터링을 넘어, 데이터 분석의 정확성과 효율성에 직접적인 영향을 주는 요소입니다. 다양한 연산자를 자유롭게 사용할 수 있다면, 더 복잡한 쿼리도 자연스럽게 작성할 수 있습니다.
✍️ 마무리
이 글에서는 SQL에서 자주 사용되는 WHERE 조건문을 종류별로 정리하고, 각 조건의 의미와 예제를 소개했습니다. SQL을 배우는 과정에서 WHERE절은 기본 중의 기본입니다. 하지만 이 기본을 얼마나 유연하게 활용하느냐가 SQL 실력의 차이를 만들어냅니다. 다음 글에서는 JOIN과 GROUP BY 조건과의 조합에 대해 다뤄볼 예정입니다. 이 글이 SQL 문법의 기초를 탄탄히 다지는 데 도움이 되었기를 바랍니다.