[SQL] 고급 데이터 필터링

CC·2022년 10월 6일
0

WHERE 절 조합하기

  • WHERE 절에는 AND나 OR를 사용하여 여러 개의 조건을 지정할 수 있으므로 다양한 필터링 제어가 가능하다.

AND 연산자 사용하기

SELECT prod_id, prod_price, prod_name
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4;
-- 지정된 조건을 모두 충족하는 행을 가져오도록 WHERE 절에서 사용하는 키워드

OR 연산자 사용하기

SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';
-- 지정된 조건을 하나라도 만족하는 행을 가져오도록 WHERE 절에서 사용하는 키워드

우선순위 이해하기

SELECT prod_name, prod_price
FROM Products
WHERE prod_price >= 10 AND (vend_id = 'DLL01' OR vend_id = 'BRS01');
-- 괄호가 AND 나 OR 연산자보다 우선순위가 높기 때문에 괄호 안의 내용 먼저 필터링한다.
-- 괄호가 없는 경우 AND 연산자의 우선순위가 OR보다 높기 때문에 값이 다르게 나온다.
-- WHERE 절에서 AND와 OR 연산자를 같이 사용할 때는 괄호를 사용하여 연산자를 묶자.

IN 연산자 사용하기

SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ('DLL01', 'BRS01')
ORDER BY prod_name;
-- WHERE 절에서 값의 목록을 지정하는 키워드
-- 각각의 값을 OR로 연달아 비교하는 것과 같은 효과를 준다.
-- IN 연산자는 조건의 범위를 지정할 때 사용되며, 괄호 안에는 조건이 나열된다.(콤마로 구분)

IN 연산자를 사용하는 이유

  • 조건이 많을 때는 IN 연산자 문법이 OR 연산자 문법보다 깔끔하고 읽기 편한다.
  • AND나 OR 연산자와 함께 사용할 때 연산자의 우선순위를 관리하기 편하다.
  • IN 연산자는 OR 연산자가 목록을 처리하는 것보다 속도가 빠르다.
  • IN 연산자는 SELECT 문을 포함할 수 있다. => 동적인 WHERE 절을 만들 수 있다.

NOT 연산자 사용하기

SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01'
-- WHERE vend_id <> 'DLL01'
ORDER BY prod_name;
-- WHERE 절에서 조건을 부정하기 위해 사용하는 키워드
-- NOT 키워드는 단독으로 사용할 수 없기에 필터링하려는 열 뒤가 아니라 앞에 적는다.

0개의 댓글