데이터를 전부 가져오지 않고 특정 조건을 만족하는 데이터만 필터링하고 싶을 때, WHERE 절을 사용한다.
WHERE a = b : a 컬럼의 값이 b 인 데이터만 필터링
WHERE a != b, WHERE a <> b : a 컬럼의 값이 b 가 아닌 데이터만 필터링 (두 연산자 모두 같은 의미지만 DBMS에 따라 지원하는 것이 다르다.)
WHERE a BETWEEN b AND c : a 컬럼의 값이 b 이상, c 이하인 데이터만 필터링
WHERE a IS NULL : a 컬럼의 값이 null 인 데이터만 필터링 ( = NULL 은 사용할 수 없다.)
도전 과제
Products 테이블에서 제품의 가격이 9.49인 제품 ID와 제품명을 출력하라.
SELECT prod_id, prod_name FROM Products WHERE prod_price = 9.49;
Products 테이블에서 제품의 가격이 9 이상인 제품 ID 와 제품명을 출력하라.
SELECT prod_id, prod_name FROM Products WHERE prod_price >= 9;
OrderItems 테이블에서 수량이 100개 이상인 데이터를 주문 번호가 중복되지 않도록 출력하라.
SELECT DISTINCT order_num FROM OrderItems WHERE quantity >= 100;
Products 테이블에서 가격이 3과 6 사이인 제품명과 제품 가격을 가져와, 그 결과를 가격순으로 정렬하라.
SELECT prod_name, prod_price FROM Products WHERE prod_price BETWEEN 3 AND 6 ORDER BY prod_price;
tip.
데이터 베이스에서 필터링 vs 다 가져오고 클라이언트에서 필터링
후자의 방법은 데이터 베이스에서 모든 데이터를 클라이언트로 보내줘야한다. - 불필요한 네트워킹
클라이언트에서 데이터를 한 행씩 모두 살펴봐야 한다. - 클라이언트 시스템 부하, 클라이언트 프로그램에서 데이터 필터링에 종속적이게 되므로 확장이 어려워짐
따라서 빠르고 효율적으로 필터링에 최적화된 데이터 베이스에서 필터링 하자.
작은 따옴표 - 문자열 데이터를 표현할 때 사용한다. 수치형 데이터에는 사용할 필요가 없다.
주의.
ORDER BY 와 WHERE 절을 혼용할 경우, WHERE 절이 먼저 와야한다.