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'과 동일하다.
'Database > SQL' 카테고리의 다른 글
7. SQL SELECT문 - 6.계산필드 (0) | 2019.03.25 |
---|---|
6. SQL SELECT문 - 5.와일드카드를 이용한 필터링 (0) | 2019.03.25 |
4. SQL SELECT문 - 3.WHERE절을 이용한 데이터 필터링 (AND,OR) (0) | 2019.03.25 |
3. SQL SELECT문 - 2.WHERE절을 이용한 데이터 필터링 (연산자) (0) | 2019.03.25 |
2. SQL SELECT문 - 1.기본 (0) | 2019.03.24 |