WHERE 절은 OR, AND 를 사용하여 여러 개의 조건을 지정하여 필터링이 가능하다.
AND, OR 연산자
OR 절은 앞의 조건식이 true 이면 뒤의 조건식을 비교하지 않는다.
AND 연산자가 OR 연산자보다 우선순위이다.
연산 우선순위가 AND, OR 보다 높은 괄호를 사용하여 연산을 제어할수도 있다. - 연산자 우선순위로만 판단할 때보다 모호함이 줄어든다.(가독성 향상)
IN 연산자
WHERE a IN (b, c) 는 WHERE a = b OR a = c 과 똑같은 결과를 낸다.
OR 문 여러 개 보다 가독성이 좋다.
연산자 우선순위도 관리하기 편하다.
OR 을 많이 사용할 경우 IN 연산자가 더 빠르다.
IN 은 SELECT 문을 포함할 수 있다. (동적인 WHERE 절을 만들 수 있게 해줌)
NOT 연산자
다른 연산자와 함께 사용되며, 열의 앞에 NOT 키워드를 사용한다
IN, BETWEEN, EXISTS 등과 같은 역 연산자가 존재하지 않는 연산자들과 같이 사용하기에 좋다
도전 과제
Vendors 테이블에서 캘리포니아에 있는 판매처의 이름을 출력하라.
SELECT vend_name FROM Vendors WHERE vend_country = 'USA' AND vend_state = 'CA';
OrderItems 테이블에서 제품 ID가 BR01, BR02, BR03인 항목이 최소 100개 이상인 모든 주문 목록의 제품 번호, 제품 ID, 수량을 출력하라
SELECT order_num, prod_id, quantity FROM OrderItems WHERE prod_id IN ('BR01', 'BR02', 'BR03') AND quantity >= 100;
Products 테이블에서 가격이 3과 6사이인 제품명과 제품 가격을 가격순으로 정렬하고 AND를 꼭 사용하여 출력하라
SELECT prod_name, prod_price FROM Products WHERE prod_price >= 3 AND prod_price <= 6 ORDER BY prod_price;
다음 SQL 문은 무엇이 잘못되었는가? - ORDER BY 가 WHERE 절보다 먼저 나왔음
SELECT vend_name
FROM Vendors
ORDER BY vend_name
WHERE vend_country = 'USA' AND vend_state = 'CA';