C.W.K.
Stream
Lesson 02 of 16 · published

WHERE: 행 필터링

~12 min · queries, filter

Level 0스키마 새싹
0 XP0/86 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

SQL 의 검색창

WHERE 가 그룹핑/집계 전에 행 필터. WHERE 에 넣은 모든 조건이 나머지 쿼리가 보지도 않을 행 제거. 더 싼 쿼리, 더 작은 결과, 더 적은 surprise.

연산자

  • 동등/비교: =, <>, <, <=, >, >=.
  • boolean 결합: AND, OR, NOT — 비-trivial 로직엔 괄호.
  • 집합 멤버십: IN (...), NOT IN (...).
  • 범위: BETWEEN x AND y (양 끝 포함).
  • 패턴: LIKE (대소문자 구분), ILIKE (대소문자 무시, PostgreSQL).
  • NULL: IS NULL, IS NOT NULL, IS DISTINCT FROM.

일찍 필터, 싸게 필터

가능한 모든 필터를 WHERE 로 — 나머지 쿼리가 처리할 데이터 줄어듦. 인덱스 쓸 수 있는 ('인덱싱 가능') predicate 가 full scan 필요한 거보다 극적으로 쌈.

Code

흔한 WHERE 모양·sql
SELECT * FROM users WHERE role = 'admin' AND active = TRUE;

SELECT * FROM products
WHERE category IN ('electronics', 'books')
  AND price BETWEEN 10 AND 100;

SELECT * FROM articles
WHERE title ILIKE '%postgres%'
  AND published_at >= now() - INTERVAL '30 days';
NULL 인지 필터·sql
-- 틀림: 안 매치
SELECT * FROM users WHERE deleted_at = NULL;

-- 맞음
SELECT * FROM users WHERE deleted_at IS NULL;

-- NULL-safe: IS DISTINCT FROM 이 NULL 을 일반 값처럼
SELECT * FROM users WHERE role IS DISTINCT FROM 'admin';

External links

Exercise

각 WHERE 작성: (a) 지난 7일 생성 유저, (b) 'A'/'B' 카테고리 + $50-$100 가격, (c) @gmail.com 끝나는 email, (d) discount NULL 또는 0.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.