[SQL] WHERE문에서 사용 가능한 연산자

Joney의 SW 공부 블로그·2023년 1월 14일
0

SQL

목록 보기
2/14

논리 연산자

논리 연산자의 종류

  • 논리 연산자는 기본적으로 1(true), 0(false)의 값을 반환
  • NULL을 반환하는 특수 경우도 있음
명칭연산자사용법의미
논리곱AND (&&)a AND b, a && ba,b 양쪽 다 1인 경우만 1 반환
논리합OR (||)a OR b, a || ba,b 중 적어도 하나만 1이면 1을 반환
부정NOT (!)NOT a, !aa가 0이면 1, 0이외는 0을 반환
배타적 논리합XORa XOR ba,b 중 어느 한쪽만 1이면 1, 그 외는 0을 반환

AND

  • 좌우 조건의 결과가 모두 1이라면 1, 그 밖은 0을 반환
  • AND가 여러개인 경우 순차적으로 적용
    • price가 100 ~ 150값을 찾고 그 다음, 그 결과에 대해서 stock이 10 이상인 것을 검색
  • 0 AND NULL은 0, NULL AND NULL, 1 AND NULLNULL 반환
SELECT
	*
FROM
	product
WHERE
	price >= 100 AND price < 150;
SELECT
	*
FROM
	product
WHERE
	price >= 100 AND price < 150 AND stock >= 10;

OR

  • 좌우 결과가 적어도 어느 한 쪽이 1이라면 1 반환, 그 외는 0을 반환
  • OR가 여러개인 경우 순차적으로 적용
    • price가 100보다 작거나 150보다 큰 값을 찾고 그 다음, 그 결과에 대해서 stock이 10 이상것 중 하나라도 만족하는 것을 검색
  • 0 OR NULL, NULL OR NULLNULL, 1 OR NULL은 1 반환
SELECT
	*
FROM
	product
WHERE
	price < 100 OR price >= 150;
SELECT
	*
FROM
	product
WHERE
	price < 100 OR price >= 150 OR stock >= 10;

NOT

  • 값이 0이라면 1, 1이라면 0을 반환
  • NOT NULL의 결과는 NULL
  • 아래의 예시의 경우 member_id가 1이 아닌 레코드를 가져옴
SELECT
	*
FROM
	customer
WHERE
	NOT (member_id = 1);

XOR

  • 배타적 논리합
  • 좌우 조건의 결과가 어느 한 쪽만이 1이라면 1, 그 밖은 0을 반환
    • 둘 중에 하나만 1이여야 반환 (아래 예시에서 100~150 빼고 전부 반환)
  • XOR가 여러개인 경우 순차적으로 적용
  • NULL에 대한 XOR 결과는 전부 NULL
SELECT
	*
FROM
	product
WHERE
	price >= 100 XOR price < 150;
SELECT
	*
FROM
	product
WHERE
	price >= 100 XOR price < 150 XOR stock >= 10;

기타 연산자

편리한 연산자

연산자사용법의미
BETWEEN ANDBETWEEN a AND ba 이상 b 이하의 경우 1반환
NOT BETWEEN ANDNOT BETWEEN a AND ba 이상 b 이하가 아닌 경우 1을 반환
ININ (a, b, c)a, b, c 중 어느 것에 일치하면 1을 반환
NOT INNOT IN (a, b, c)a, b, c 중 어느 것에 일치하지 않으면 1을 반환

BETWEEN 연산자

SELECT
	*
FROM
	product
WHERE
	price BETWEEN 100 AND 150;
SELECT
	*
FROM
	prpduct
WHERE
	price NOT BETWEEN 100 AND 150;

IN 연산자

  • 배열 등에 주로 사용되며, 배열에 포함되는 경우 1, 포함되지 않는 경우는 0을 반환
SELECT
	*
FROM
	product
WHERE
	product_id IN(1, 3, 4);
SELECT
	*
FROM
	product
WHERE
	product_id NOT IN(1, 3, 4);

산술 연산자

산술 연산자의 종류

연산자사용법의미
+a + ba에 b를 더한다
-a - ba에 b를 뺀다
*a * ba에 b를 곱한다
/a / ba에 b를 나눈다
%a % ba를 b로 나눈 나머지
DIVa DIV ba를 b로 나눌 때의 정수 부분
MODa MOD ba를 b로 나눈 나머지
SELECT
	*
FROM
	product
WHERE
	stock * price >= 5000;
  • SELECT 구에서도 자주 사용됨
SELECT
	product_name,
	stock * price
FROM
	product;

연산자의 우선 순위

  • 여러 연산자를 동시에 사용할 때는 우선 순위가 발생
  • 우선 순위순으로 정리
연산자비고
BINARY
!
*, /, DIV, %, MOD
-, +
=, <=>, >=, <=, <, >, <>, !=, IS, LIKE, IN
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
&&, AND
XOR
||, OR

연산자를 사용할 때의 규칙

  • AND가 OR보다 먼저 연산됨
  • OR를 먼저 하려면 ( )로 묶어야함
SELECT
	*
FROM
	product
WHERE
	price < 130 OR price > 150 AND stock >= 20;
SELECT
	*
FROM
	product
WHERE
	(price < 130 OR price > 150) AND stock >= 20;

출처: 그림으로 배우는 SQL 입문
profile
SW 지식 노트 블로그

0개의 댓글