비교 연산과 논리 연산
이번 장에서는 비교 연산과 논리 연산에 대해 살펴보겠습니다. 다만 이 2개의 연산자 말고도 WHERE
를 사용하면 실제 어떤 SQL문이 작성되는지 볼 수 있기 때문에 이번 장에서는 부분 WHERE
을 사용하도록 하겠습니다. WHERE
는 다른 챕터에서 상세히 다룹니다.
1. 비교 연산자
비교 연산자는 두 값을 비교하고 그 결과로 1(참)
또는 0(거짓)
를 반환합니다. 주요 비교 연산자는 다음과 같습니다.
=
: 두 값이 같으면 참!=
,<>
: 두 값이 다르면 참>
: 왼쪽 값이 더 크면 참<
: 왼쪽 값이 더 작으면 참>=
: 왼쪽 값이 크거나 같으면 참<=
: 왼쪽 값이 작거나 같으면 참
SELECT 1 = 1; -- 1
SELECT 1 != 1; -- 0
SELECT 1 > 1; -- 0
SELECT 1 < 1; -- 0
SELECT 1 = 1; -- 1
SELECT 1 != 1; -- 0
SELECT 1 > 1; -- 0
SELECT 1 < 1; -- 0
다음 예시는 WHERE
를 사용하여 가격이 50,000원 이상인 상품을 조회하는 쿼리입니다.
SELECT 상품명, 가격
FROM 상품
WHERE 가격 >= 50000;
SELECT 상품명, 가격
FROM 상품
WHERE 가격 >= 50000;
<>
연산자는 두 값이 다르면 참을 반환합니다. 다음 쿼리는 카테고리가 '디지털'이 아닌 상품을 조회하는 예시입니다. 한 번 실행한 다음 WHERE
를 주석처리하고 실행해보세요.
SELECT 상품명, 가격, 카테고리ID
FROM 상품
WHERE 카테고리ID <> 9;
SELECT 상품명, 가격, 카테고리ID
FROM 상품
WHERE 카테고리ID <> 9;
2. 논리 연산자
비교 연산자를 사용하여 조건을 정의한 후, 논리 연산자를 통해 여러 조건을 결합할 수 있습니다. 논리 연산자는 AND
, OR
, NOT
이 있습니다.
여기서 참은 1 또는 TRUE, 거짓은 0 또는 FALSE로 표현합니다. 결과는 숫자로 반환되며, TRUE
는 1, FALSE
는 0으로 반환됩니다.
2.1 AND 연산자
AND
연산자는 두 조건이 모두 참일 때만 참을 반환합니다.
SELECT TRUE AND TRUE; -- 1, TRUE
SELECT TRUE AND FALSE; -- 0, FALSE
SELECT TRUE AND TRUE; -- 1, TRUE
SELECT TRUE AND FALSE; -- 0, FALSE
이것이 어떻게 쓰이는지 보도록 하겠습니다. 다음 쿼리는 카테고리가 '디지털'(카테고리ID = 9)이고, 가격이 100,000원 이상인 상품을 조회하는 예시입니다.
SELECT 상품명, 가격, 카테고리ID
FROM 상품
WHERE 카테고리ID = 9 AND 가격 >= 100000;
SELECT 상품명, 가격, 카테고리ID
FROM 상품
WHERE 카테고리ID = 9 AND 가격 >= 100000;
2.2 OR 연산자
OR
연산자는 두 조건 중 하나라도 참이면 참을 반환합니다.
SELECT TRUE OR FALSE; -- 1, TRUE
SELECT FALSE OR FALSE; -- 0, FALSE
SELECT TRUE OR FALSE; -- 1, TRUE
SELECT FALSE OR FALSE; -- 0, FALSE
다음 쿼리는 카테고리가 '디지털'이거나 가격이 100,000원 이상인 상품을 조회하는 예시입니다.
SELECT 상품명, 가격, 카테고리ID
FROM 상품
WHERE 카테고리ID = 9 OR 가격 >= 100000;
SELECT 상품명, 가격, 카테고리ID
FROM 상품
WHERE 카테고리ID = 9 OR 가격 >= 100000;
2.3 NOT 연산자
NOT
연산자는 조건이 거짓일 때 참을 반환합니다.
SELECT NOT TRUE; -- 0, FALSE
SELECT NOT FALSE; -- 1, TRUE
SELECT NOT TRUE; -- 0, FALSE
SELECT NOT FALSE; -- 1, TRUE
다음 쿼리는 카테고리가 '디지털'이 아닌 상품을 조회하는 예시입니다.
SELECT 상품명, 가격, 카테고리ID
FROM 상품
WHERE NOT 카테고리ID = 9;
SELECT 상품명, 가격, 카테고리ID
FROM 상품
WHERE NOT 카테고리ID = 9;