지난 글에서 기본적인 SELECT문과 WHERE문 등의 기초를 배워보았다. 이번 글에서는 BETWEEN, IN, OR, NOT 등 필터링을 하는 다른 구문들을 익혀보자.
■ WHERE문의 기초
다시 한 번 WHERE문을 리마인드를 해보자.
SELECT 컬럼-이름 FROM 테이블-이름 WHERE 컬럼-이름 Operator 값;
Operator의 종류는 다음과 같다.
Operator 타입 종류 | 뜻 |
---|---|
= | 같다 |
<> | 같지 않다 (어떤 버전에서는 != 라고도 사용) |
> | 크다 |
< | 작다 |
>= | 크거나 같다 |
<= | 작거나 같다 |
BETWEEN | 어떤 값 사이에 있다 |
IS NULL | NULL 값이다 |
예를 들어 Products 테이블에서 BrandName 컬럼이 ‘Patagonia’가 아닌 제품만 조회하고 싶다고 하자.
SELECT * FROM Products WHERE BrandName <> 'Patagonia';
만약 Price 컬럼이 20~50인 제품을 조회하고 싶다면 다음과 같다.
SELECT * FROM Products WHERE Price BETWEEN 20 AND 50;
■ IN, OR, NOT
IN은 어떤 범위 조건을 지정하고 싶을 때 사용한다. () 안에 넣어서 사용하는 것을 주의해서 보자. 만약 Price가 10, 12, 13인 제품만 조회하고 싶다면 다음과 같은 쿼리문을 사용한다.
SELECT * FROM Products WHERE Price IN (10, 12, 13);
OR은 특정 조건을 만족하는 행을 반환하고 싶을 때 사용한다. 예를 들어 BrandName이 ‘Patagonia’이거나 ‘Birkenstock’인 제품을 조회하고 싶을 때 쿼리문을 작성해보자. OR 뒤에 조건뿐만 아니라 컬럼 이름부터 다시 써야하는 것을 주의해서 보자.
SELECT * FROM Products WHERE BrandName = 'Patagonia' OR BrandName = 'Birkenstock';
IN과 OR은 같은 원리로 동작한다. 그러나 IN의 경우 복수의 리스트를 입력할 수 있고, OR보다 빠르게 실행되며, 순서를 신경쓰지 않아도 된다는 장점이 있다. OR는 다른 Operator와 같이 쓸 경우 좀 더 주의를 기울여야 한다. 다음의 예시를 보자.
왼쪽 쿼리문의 경우, weight가 210보다 적은 사람들도 조회된 것을 확인할 수 있다. 만약 birthCity가 Denver이거나 Trinidad인 사람 중에서 weight가 210보다 큰 사람을 조회하고 싶은 경우 오른쪽 쿼리문처럼 OR 문을 괄호 안에 넣어야 한다.
NOT Operator는 다음처럼 사용할 수 있다.
SELECT * FROM People WHERE NOT birthCity = 'Denver' AND NOT birthCity = 'Trinidad';