본문 바로가기

Database/SQL

4. SQL SELECT문 - 3.WHERE절을 이용한 데이터 필터링 (AND,OR)

3. WHERE절을 이용한 데이터 필터링 (논리연산자)

- AND, OR, NOT, IN


(1) AND, OR


EX.1 AND

SELECT product_id, product_price, product_name

FROM Products

WHERE vendor_id = 'S001' AND product_price <= 500 ;

* Products 테이블에서 product_id, product_price, product_name 필드를 가져온다.

  단, vendor_id가 S001 이고 product_price가 500 이하인 것에 한한다.

* AND로 연결된 두 조건을 모두 만족하는 레코드만 가져온다.



EX.2 OR

SELECT product_id, product_price, product_name

FROM Products

WHERE vendor_id = 'S001' OR product_price <= 500 ;

* Products 테이블에서 product_id, product_price, product_name 필드를 가져온다.

  단, vendor_id가 S001 이거나 product_price가 500 이하인 것에 한한다.

* OR로 연결된 두 조건 중 하나라도 만족하는 레코드는 다 가져온다.



EX.3 AND와 OR의 우선순위

SELECT product_price, product_name

FROM Products

WHERE vendor_id = 'S001' OR vendor_id = 'S002' AND product_price <= 500 ;

* Products 테이블에서 product_id, product_price, product_name 필드를 가져온다.

  단, [vendor_id가 S001] 이거나 [vendor_id가 S002 이고 product_price가 500 이하인] 것에 한한다.

* 일반적으로 AND와 OR 연산자의 경우 괄호( )로 묶여있지 않을 경우 AND 연산자를 먼저 처리한다.

  따라서 [vendor_id가 S001 이거나 vendor_id가 S002] 이고 [product_price가 500 이하]인 레코드로 필터링을

  하기 위해서는 괄호로 우선 처리될 조건들을 묶어주어야 한다.



EX.4 괄호로 묶어서 우선순위 지정

SELECT product_price, product_name

FROM Products

WHERE (vendor_id = 'S001' OR vendor_id = 'S002') AND product_price <= 500 ;

* Products 테이블에서 product_id, product_price, product_name 필드를 가져온다.

  단, [vendor_id가 S001 이거나 vendor_id가 S002] 이고 [product_price가 500 이하]인 것에 한한다.