오늘은 SQL에서 데이터를 필터링하는 방법인 WHERE 절에 대해 정리해본다.
SQL은 데이터를 조회할 때 원하는 조건만 추려내야 할 때가 많은데, 이럴 때 WHERE 절을 사용하게 된다.
목차
WHERE 절은 특정 조건을 만족하는 데이터만 조회할 수 있게 하는 필터 조건이다.
데이터베이스에서 원하는 값만 추출할 수 있기 때문에, 굉장히 자주 사용하게 된다.
SELECT * FROM users
WHERE age > 30
→ users 테이블에서 나이가 30세를 초과한 데이터만 조회하는 쿼리이다.
* WHERE 절 사용 시 주의할 점
* 데이터 타입에 따른 주의점
타입 | 예시 | 작성 방법 |
숫자 | 124 | 그대로 작성 |
문자 | '124' | 따옴표로 감싸야 문자로 인식된다 |
날짜 | '2024-01-01' | 'yyyy-mm-dd' 형식으로 작성한다 |
날짜+시간 | '2024-01-01 14:30:00' | 'yyyy-mm-dd hh:mm:ss' 형식으로 작성한다 |
WHERE 절에 비교 연산자를 조합하면 원하는 조건을 더욱 세분화할 수 있다.
연산자 | 의미 |
= | 같다 |
> | 초과 |
>= | 이상 |
< | 미만 |
<= | 이하 |
!=, <> | 같지 않다 |
-- 예시
WHERE age > 25
WHERE gender = 'female'
WHERE signup_date >= '2024-01-01'
WHERE status != 'deleted'
참고로 !=과 <>는 기능상 동일하지만,
<> 는 ANSI SQL 표준 문법이라고 한다.
ANSI SQL은 DBMS마다 다른 SQL 문법을 미국 표준 협회(American National Standards Institute)에서 표준화한 것으로, 오라클이나 MySQL 등 다양한 DB에서 호환성을 높이기 위해 만들어진 표준이다.
여러 조건을 함께 적용하고 싶을 때는 논리 연산자를 사용한다.
-- 예시
WHERE age > 25 AND city = 'Seoul'
WHERE status = 'active' OR signup_date >= '2024-01-01'
-- Q1. ‘천안시’와 ‘안양시’에 있는 주민센터 데이터를 뽑아주세요.
SELECT *
FROM station
WHERE local IN ('천안시','안양시')
-- Q3-1. 온도가 30도 이상 50도 이하인 사우나 종류 데이터
-- AND 사용
SELECT *
FROM sauna
WHERE lat >= 30
AND lat <= 50
-- BETWEEN 사용
SELECT *
FROM sauna
WHERE lat BETWEEN 30 AND 50
SQL에서는 값이 없는 상태를 NULL로 처리한다.
= 연산자 대신 IS NULL 혹은 IS NOT NULL을 사용하여 조건을 줄 수 있다.
-- 특정 컬럼의 값이 없는(NULL) 데이터 구하기
-- Q1. agreement가 'yes'이면서 name이 없는 데이터
SELECT *
FROM customer_info
WHERE agreement = 'yes'
AND name IS NULL
-- 반대로 특정 컬럼의 값이 없는 거 제외하고(NOT NULL) 데이터 구하기
SELECT *
FROM rental_history
WHERE bike_id = 'SPB-21745'
AND distance IS NOT NULL
문자열의 특정 패턴을 조건으로 찾을 때는 LIKE 또는 NOT LIKE를 사용한다.
이때 와일드카드로 %와 _를 사용할 수 있다.
와일드카드 | 의미 |
% | 아무 문자 0개 이상 |
_ | 아무 문자 1개 |
예시)
-- Q1. 주소에 ‘천안시’가 들어간 데이터
SELECT *
FROM station
WHERE address LIKE '%천안시%';
* LIKE 심화
_는 원래 한 글자 와일드카드이지만, 진짜 문자로서 _를 포함한 문자열을 찾고 싶을 수도 있다.
이럴 때는 이스케이프 문자 \ 를 사용해서 문자로 인식시킬 수 있다.
예) '_analyst'로 끝나는 데이터 찾고 싶을 경우 → '%\_analyst' 로 작성한다
오늘은 WHERE 절을 중심으로,
데이터를 원하는 조건에 맞춰 필터링하는 다양한 방법을 정리했다.
기본적인 비교 연산자와 논리 연산자 외에도,
여러 개의 조건을 묶을 수 있는 IN,
범위 조건에 유용한 BETWEEN,
비어 있는 값을 찾는 IS NULL,
그리고 문자열 패턴을 찾는 LIKE까지 살펴보았다.
WHERE 절은 SQL에서 가장 기본이 되는 필터링 도구이지만,
이처럼 다양한 연산자를 조합하면 데이터를 훨씬 더 유연하고 정확하게 조회할 수 있게 된다.
오늘 정리한 내용을 반복해서 연습하고,
실제 내가 다루는 서비스 데이터에 적용해보며 익숙해지는 것이 중요하다고 느꼈다.
작은 쿼리 한 줄도 디테일에 따라 결과가 완전히 달라질 수 있다는 점을 다시 한 번 실감하게 된다.
다음은 데이터를 정렬하는 방식에 대해 알아볼 예정이다.
(본 내용은 데이터리안 ‘SQL 데이터 분석 캠프 입문반’을 수강하며 작성한 내용입니다.)
SQL 숫자 연산자 정리 (0) | 2025.04.18 |
---|---|
데이터베이스 이론 (1) | 2025.04.16 |
데이터 순서 정렬하기 (0) | 2025.04.15 |
데이터 추출하기 (0) | 2025.04.07 |
데이터 분석 공부, 이젠 피할 수 없다. (0) | 2025.04.07 |