5. SQL SELECT문 - 4.WHERE절을 이용한 데이터 필터링 (IN. NOT)
4. WHERE절을 이용한 데이터 필터링 (IN. NOT)
(1) IN
WHERE절에서 여러 개의 조건을 OR관계로 묶어 나열하여 사용한다.
EX.1
SELECT product_name, product_price
FROM Products
WHERE vendor_id IN ('S001', 'S002')
ORDER BY product_name ;
* Products 테이블로부터 product_name, product_price 필드를 가져온다.
단, vendor_id가 S001 이거나 S002 인 레코드에 한한다.
* 괄호 안의 컴마(,)로 구분된 2개의 조건은 OR조건과 같다
EX.2 = EX.1
SELECT product_name, product_price
FROM Products
WHERE vendor_id = 'S001' OR vendor_id = 'S002'
ORDER BY product_name ;
* Products 테이블로부터 product_name, product_price 필드를 가져온다.
단, vendor_id가 S001 이거나 S002 인 레코드에 한한다.
CF. 왜 OR조건 대신 IN을 쓰는가?
* 조건이 여러개일 때 IN연산자가 쓰기 쉬우며 연산자 수가 줄어든다.
* 순서를 관리하기 쉽다.
* 실행속도가 빠르다
* IN 연산자 안에 다른 SELECT문을 넣을 수 있다(동적 WHERE절).
▶ 하위쿼리 내용 관련
(2) NOT
- 바로 뒤에 오는 조건을 부정하는 역할.
- 필터링할 필드의 앞에 사용한다.
- 하나의 간단한 조건일 경우 NOT을 사용하는 이점이 없다.
- NOT과 IN을 같이 사용하여 조건에 해당하지 않는 값을 필터링 할 때 사용할 수 있다.
- MySQL에서는 지원하지 않는다.
EX.1
SELECT product_name
FROM Products
WHERE NOT vendor_id = 'S001'
ORDER BY product_name ;
* Products 테이블에서 product_name 필드를 가져온다.
단, vendor_id가 S001이 아닌 것에 한한다.
product_name의 오름차순으로 정렬한다.
* WHERE NOT vendor_id = 'S001' 은 WHERE vendor_id <> 'S001'과 동일하다.