Windows · SQLite 3.45.3. 본문의 첫 예제를 실행하여 표준 출력과 예상 결과가 일치함을 확인했습니다. 연습문제의 모든 입력을 검증한 것은 아닙니다.
이 글의 순서 4개 단락
상품 목록에서 가격이 10,000원 이하이면서 분류가 문구 또는 생활인 상품만 찾으려면 어떻게 해야 할까요? SELECT와 FROM으로 가져올 열과 데이터를 정한 뒤, WHERE에 조건을 적으면 됩니다. 이 강의는 SQLite를 기준으로 합니다.
WHERE와 조건 결합하기
WHERE는 각 행에 조건을 적용해 조건이 참인 행만 결과에 남깁니다. 예를 들어 price <= 10000은 가격이 10,000 이하인지 비교합니다. <=는 기준값을 포함하고, <는 포함하지 않습니다. 값이 같은지는 =로 비교하며, >, >=도 사용할 수 있습니다.
두 조건을 AND로 연결하면 둘 다 참이어야 합니다. OR로 연결하면 적어도 하나가 참이면 됩니다. 여러 조건을 섞을 때는 괄호로 먼저 묶을 범위를 나타낼 수 있습니다.
상품을 조건으로 조회하기
다음 예제의 입력은 코드 안에 적은 상품 네 행입니다. WITH ... AS (VALUES ...)는 실습에 사용할 이름 붙은 임시 결과를 만드는 SQLite 구문입니다. 여기서는 products라는 이름과 name, category, price 열을 붙여 상품 테이블처럼 조회합니다. 별도의 테이블이나 파일을 준비할 필요가 없습니다.
WITH products(name, category, price) AS (
VALUES
('연필', '문구', 1000),
('노트', '문구', 10000),
('컵', '생활', 8000),
('가방', '생활', 15000)
)
SELECT name, category, price
FROM products
WHERE price <= 10000
AND (category = '문구' OR category = '생활');

예상 결과는 다음 세 행입니다. 출력 형식은 사용하는 SQLite 실행 환경에 따라 다를 수 있으며, 정렬 조건이 없으므로 행의 순서는 보장되지 않습니다.
name | category | price
연필 | 문구 | 1000
노트 | 문구 | 10000
컵 | 생활 | 8000
연필과 노트는 문구이고 가격도 기준 이하입니다. 컵은 생활 분류이며 가격이 기준 이하입니다. 가방은 생활 분류이지만 가격이 15,000이므로 AND의 가격 조건을 만족하지 못합니다. 노트는 가격이 정확히 10,000이지만 <=가 기준값을 포함하므로 결과에 남습니다.
흔한 실수와 경계 조건
문자열 값인 '문구'와 '생활'에는 작은따옴표를 사용합니다. 열 이름인 category를 작은따옴표로 감싸면 열이 아니라 문자열로 취급되어 의도한 비교가 되지 않습니다.
괄호를 빼고 price <= 10000 AND category = '문구' OR category = '생활'이라고 쓰면 SQLite에서는 AND가 OR보다 먼저 결합됩니다. 이 경우 생활 분류는 가격과 관계없이 선택되므로 가방도 결과에 포함됩니다.
조건에 맞는 행이 없으면 결과는 빈 행 집합입니다. 또 가격이 없는 값인 NULL이면 price <= 10000의 결과가 참이 아니므로 그 행은 선택되지 않습니다. NULL을 따로 찾는 방법은 다음 강의에서 살펴봅니다.
연습: 가격 기준 바꾸기
위 예제에서 분류 조건은 그대로 두고 가격이 10,000원 미만인 상품만 조회해 보세요. 어떤 행이 남을까요?
WHERE의 가격 비교를 다음처럼 바꾸면 됩니다.
WHERE price < 10000
AND (category = '문구' OR category = '생활')
예상 결과는 연필과 컵입니다. 노트는 가격이 정확히 10,000이므로 < 10000을 만족하지 않습니다. 가방도 가격 조건을 만족하지 않습니다.
CHECK THE SOURCE
참고한 공식 문서
기능 설명은 위 문서를 참고했으며, 예제의 입력·결과와 한계는 본문에 따로 기록했습니다.