
조건문, 비교 연산자, 문자열 패턴, NULL 처리 등 다양한 필터링 기법으로 데이터를 정교하게 조회하는 법을 정리하였습니다.
📌 개념: 특정 조건을 만족하는 행만 조회할 때 사용.
SELECT item
FROM coats
WHERE color = 'green'
LIMIT 5;
실행 순서:
FROM → WHERE → SELECT → LIMIT
📌 종류:
| 연산자 | 의미 |
|---|---|
> | 보다 크다 |
< | 보다 작다 |
= | 같다 |
>= | 이상 |
<= | 이하 |
<> | 같지 않다 (≠) |
📌 예제:
SELECT title
FROM films
WHERE release_year > 1960;
SELECT title
FROM films
WHERE release_year = 1960;
SELECT title
FROM films
WHERE release_year <> 1960;
📌 문자열은 반드시 ' 작은 따옴표로 감싼다.
SELECT title
FROM films
WHERE country = 'Japan';
OR / AND / BETWEEN
SELECT *
FROM coats
WHERE color = 'yellow' OR length = 'short';
SELECT *
FROM coats
WHERE color = 'yellow' AND length = 'short';
SELECT *
FROM coats
WHERE buttons BETWEEN 1 AND 5;
✔ 올바른 사용 예:
-- 둘 중 하나라도 true이면 OK
SELECT title
FROM films
WHERE release_year = 1994 OR release_year = 2000;
-- 둘 다 true여야 OK
SELECT title
FROM films
WHERE release_year > 1994 AND release_year < 2000;
✔ 괄호로 묶어 조건 그룹화:
SELECT title
FROM films
WHERE (release_year = 1994 OR release_year = 1995)
AND (certification = 'PG' OR certification = 'R');
📌 와일드카드:
| 기호 | 설명 |
|---|---|
% | 0개 이상 문자 매칭 |
_ | 정확히 1개 문자 매칭 |
-- 'Ade'로 시작하는 이름
SELECT name
FROM people
WHERE name LIKE 'Ade%';
-- 'Ev_' : E + v + 한 글자
SELECT name
FROM people
WHERE name LIKE 'Ev_';
-- 마지막 글자가 'r'
SELECT name
FROM people
WHERE name LIKE '%r';
-- 세 번째 문자가 't'
SELECT name
FROM people
WHERE name LIKE '__t%';
📌 NOT LIKE 도 가능:
SELECT name
FROM people
WHERE name NOT LIKE 'A.%';
📌 여러 값을 비교할 때 사용 (OR의 축약)
SELECT title
FROM films
WHERE release_year IN (1920, 1930, 1940);
SELECT title
FROM films
WHERE country IN ('Germany', 'France');
📌 NULL은 '값이 없음', 즉 '미입력' 상태.
-- 전체 행 수
SELECT COUNT(*)
FROM people;
-- NULL 제외한 컬럼 수
SELECT COUNT(birthdate)
FROM people;
-- birthdate가 없는 사람
SELECT name
FROM people
WHERE birthdate IS NULL;
-- birthdate가 있는 사람 수
SELECT COUNT(name)
FROM people
WHERE birthdate IS NOT NULL;
✔ 핵심 정리:
IS NULL : 값이 비어있음을 확인IS NOT NULL : 값이 존재함을 확인COUNT(*) 는 NULL 포함COUNT(컬럼) 은 NULL 제외