BOOK

[Do it SQL] Chapter 05-3

Minch13r 2025. 3. 25. 21:53

1. 산술 연산자

산술 연산자는 숫자 데이터에 대한 기본적인 수학 연산을 수행합니다.

연산자 설명 예시
+ 덧셈 SELECT price + tax FROM  products;
- 뺄셈 SELECT salary - tax FROM employees;
* 곱셈 SELECT quantity * price FROM orders;
/ 나눗셈 SELECT total_amout / item_count FROM sales;
% 나머지(모듈로) SELECT employee_id % 2 FROM employees;

 

산술 연산자는 숫자 데이터를 계산할 때 매우 유용합니다. 예를 들어, 상품의 총 가격을 계산하거나 평균값을 구할 때 사용할 수 있습니다.

-- 직원의 연봉에서 세금을 제외한 실수령액 계산
SELECT employee_name, annual_salary, annual_tax, 
       annual_salary - annual_tax AS net_salary
FROM employees;

-- 상품의 총 가격 계산 (단가 × 수량)
SELECT product_name, unit_price, quantity, 
       unit_price * quantity AS total_price
FROM order_details;

2. 논리 부정 연산자 (NOT)

논리 부정 연산자는 조건의 결과를 반대로 바꿉니다.

연산자 설명 예시
NOT 조건의 결과를 반대로 변환 SELECT * FROM products WHERE NOT discontinued = 1;

 

NOT 연산자는 주로 WHERE 절에서 조건을 부정할 때 사용됩니다.

-- 재고가 없지 않은 상품 조회 (즉, 재고가 있는 상품)
SELECT product_name, stock 
FROM products 
WHERE NOT stock = 0;

-- 특정 카테고리에 속하지 않는 상품 조회
SELECT product_name, category 
FROM products 
WHERE NOT category = 'Electronics';

3. IN 연산자

IN 연산자는 값이 지정된 목록 내에 있는지 확인합니다.

연산자 설명 예시
IN 값이 목록에 포함되어 있는지 확인 SELECT * FROM products WHERE category_id IN (1, 2, 5);
NOT IN 값이 목록에 포함되어 있지 않은지 확인 SELECT * FROM customers WHERE country NOT IN ('USA', 'Canada');

 

IN 연산자는 여러 값을 OR 조건으로 연결하는 것보다 더 간결하고 효율적인 방법을 제공합니다.

-- 특정 부서에 속한 직원 조회
SELECT employee_name, department 
FROM employees 
WHERE department IN ('Marketing', 'Sales', 'IT');

-- 특정 국가에 속하지 않는 고객 조회
SELECT customer_name, country 
FROM customers 
WHERE country NOT IN ('USA', 'UK', 'Germany');

4. BETWEEN A AND B 연산자

BETWEEN 연산자는 값이 특정 범위 내에 있는지 확인합니다.

연산자 설명 예시
BETWEEN 값이 지정된 범위 내에 있는지 확인 (범위 포함) SELECT * FROM products WHERE price BETWEEN 10 AND 20;
NOT BETWEEN 값이 지정된 범위 밖에 있는지 확인  SELECT * FROM orders WHERE order_date NOT BETWEEN '2023-01-01' AND '2023-12-31';

 

BETWEEN 연산자는 범위 검색을 간단하게 만들어주며, 숫자뿐만 아니라 날짜와 문자열에도 사용할 수 있습니다.

-- 특정 가격 범위의 상품 조회
SELECT product_name, price 
FROM products 
WHERE price BETWEEN 100 AND 500;

-- 특정 기간 동안의 주문 조회
SELECT order_id, order_date 
FROM orders 
WHERE order_date BETWEEN '2023-01-01' AND '2023-03-31';

5. IS NULL 연산자

IS NULL 연산자는 값이 NULL인지 확인합니다.

연산자 설명 예시
IS NULL 값이 NULL인지 확인 SELECT * FROM customers WHERE phone IS NULL;
IS NOT NULL 값이 NULL이 아닌지 확인 SELECT * FROM employees WHERE manager_id IS NOT NULL;

 

NULL은 '값이 없음'을 의미하며, 일반 비교 연산자(=, !=)로는 NULL을 비교할 수 없습니다. 반드시 IS NULL 또는 IS NOT NULL을 사용해야 합니다.

-- 전화번호가 등록되지 않은 고객 조회
SELECT customer_name, phone 
FROM customers 
WHERE phone IS NULL;

-- 관리자가 있는 직원 조회
SELECT employee_name, manager_id 
FROM employees 
WHERE manager_id IS NOT NULL;

6. 집합 연산자

집합 연산자는 두 개 이상의 SELECT 문 결과를 결합합니다.

연산자 설명 예시
UNION 두 쿼리 결과를 결합하고 중복을 제거 SELECT city FROM customers UNION SELECT city FROM suppliers;
UNION ALL 두 쿼리 결과를 결합하고 중복을 유지 SELECT city FROM customers UNION ALL SELECT city FROM suppliers;
INTERSECT 두 쿼리 결과의 교집합 반환 SELECT city FROM customers INTERSECT SELECT city FORM suppliers;
EXCEPT/MINUS 첫 번쨰 쿼리에서 두 번째 쿼리 결과를 제외한 결과 반환 SELECT city FROM customers EXCEPT SELECT city FROM suppliers;

 

집합 연산자는 여러 테이블에서 데이터를 결합하거나 비교할 때 유용합니다.

-- 고객과 공급업체가 있는 모든 도시 목록 (중복 제거)
SELECT city FROM customers
UNION
SELECT city FROM suppliers;

-- 고객과 공급업체가 모두 있는 도시 목록
SELECT city FROM customers
INTERSECT
SELECT city FROM suppliers;

-- 고객은 있지만 공급업체는 없는 도시 목록
SELECT city FROM customers
EXCEPT
SELECT city FROM suppliers;

7. 연산자 우선순위

SQL에서 연산자는 다음과 같은 우선순위를 가집니다 (높은 것부터 낮은 순서로):

  1. 괄호 ( )
  2. 산술 연산자: *, /, % (곱셈, 나눗셈, 모듈로)
  3. 산술 연산자: +, - (덧셈, 뺄셈)
  4. 비교 연산자: =, <>, !=, <, >, <=, >=, LIKE, IN, BETWEEN, IS NULL
  5. 논리 연산자: NOT
  6. 논리 연산자: AND
  7. 논리 연산자: OR

우선순위를 명확히 하고 가독성을 높이기 위해 괄호를 사용하는 것이 좋습니다.

-- 우선순위 예시
SELECT product_name, unit_price, units_in_stock
FROM products
WHERE (category_id = 1 OR category_id = 2)
      AND units_in_stock > 0
      AND unit_price * 0.9 <= 100;

'BOOK' 카테고리의 다른 글

[Do it SQL] Chapter 06-3/ 06-4  (0) 2025.03.31
[Do it SQL] Chapter 06-1/ 06-2  (1) 2025.03.29
[Do it SQL] Chapter 05-1/ 05-2  (2) 2025.03.24
[Do it SQL] Chapter 04-5 / 04-6  (1) 2025.03.21
[Do it SQL] Chapter 04-3 / 04-4  (0) 2025.03.20