SQL - 표현식

안녕하세요, 미래의 SQL 마법사 여러분! 오늘 우리는 SQL 표현식의 세계로 흥미로운 여정을 떠납니다. 프로그래밍에 새로운 사람이라고 걱정하지 마세요 - 저는 당신의 친절한 안내자가 되어, 단계별로 이를 안내할 것입니다. 이 튜토리얼의 끝까지 가면, 당신은 프로처럼 SQL 표현식을 작성할 수 있을 것입니다!

SQL - Expressions

SQL 표현식이란?

기본적인 것으로 시작해 보겠습니다. SQL 표현식은 SQL 쿼리에서 사용할 수 있는 공식이나 계산입니다. 하나 이상의 값, 연산자, 그리고 SQL 함수의 조합으로, 평가된 값을 반환합니다. 이를 데이터베이스 쿼리에 맛을 더해주는 비밀 조미료라고 생각해 보세요!

예를 들어, 제품 테이블이 있고, 모든 가격에 10% 할인을 적용하려고 한다면, 다음과 같은 표현식을 사용할 수 있습니다:

SELECT product_name, price, price * 0.9 AS discounted_price
FROM products;

이 쿼리에서 price * 0.9이 우리의 SQL 표현식입니다. 이는 가격을 0.9(10%를 뺀 것과 동일)로 곱합니다.

SQL 부울 표현식

이제 부울 표현식에 대해 알아보겠습니다. 부울 표현식은 SQL 세계의 참/거짓 질문과 같습니다. 항상 TRUE, FALSE, 또는 NULL(뜻하는 것은 "알 수 없음") 중 하나로 결과를 반환합니다.

부울 표현식은 데이터를 필터링하거나 쿼리에서 결정을 내리는 데 매우 유용합니다. 다음은 부울 표현식에서 흔히 사용되는 연산자입니다:

연산자 설명
= 같다
<> 다르다
> 크다
< 작다
>= 크거나 같다
<= 작거나 같다
AND 논리 AND
OR 논리 OR
NOT 논리 NOT

다음은 몇 가지 예제입니다:

-- 가격이 $100 이상인 모든 제품 찾기
SELECT * FROM products WHERE price > 100;

-- 최근 30일 동안 주문된 모든 주문 찾기
SELECT * FROM orders WHERE order_date >= CURRENT_DATE - INTERVAL '30 days';

-- 뉴욕 또는 캘리포니아에 거주하는 모든 활성 고객 찾기
SELECT * FROM customers
WHERE (state = 'NY' OR state = 'CA') AND is_active = TRUE;

이 예제들에서, WHERE 절 뒤에 오는 부분은 부울 표현식입니다. 데이터의 각 행에 대해 데이터베이스에 yes/no 질문을 하는 것과 같습니다.

SQL 수학 표현식

다음은 수학 표현식입니다. 이는 SQL의 수학 문제와 같아서, 숫자와 산술 연산을 포함합니다.

다음은 기본적인 산술 연산자입니다:

연산자 설명
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 모듈로(나머지)

다음은 몇 가지 예제입니다:

-- 재고의 총 가치 계산
SELECT product_name, quantity, price, quantity * price AS total_value
FROM inventory;

-- 직원의 나이 계산
SELECT first_name, last_name, EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM birth_date) AS age
FROM employees;

-- 지출된 예산 비율 계산
SELECT project_name, budget, spent, (spent / budget) * 100 AS percent_spent
FROM projects;

이 예제들에서 우리는 데이터에 대한 계산을 수행하는 수학 표현식을 사용하고 있습니다. 이는 기존 데이터에서 새로운 통찰을 얻는 데 매우 유용합니다.

SQL 날짜 표현식

마지막으로, 날짜 표현식에 대해 이야기해 보겠습니다. SQL에서 날짜를 다루는 것은 복잡할 수 있지만, 매우 강력합니다. 날짜 표현식은 쿼리에서 날짜를 조작하고 비교할 수 있습니다.

다음은 일반적인 날짜 함수입니다:

함수 설명
CURRENT_DATE 현재 날짜 반환
CURRENT_TIMESTAMP 현재 날짜와 시간 반환
DATE_ADD 지정된 시간 간격을 날짜에 추가
DATE_SUB 지정된 시간 간격을 날짜에서 뺄
DATEDIFF 두 날짜 간의 차이 계산

다음은 몇 가지 예제입니다:

-- 오늘 주문된 주문 찾기
SELECT * FROM orders WHERE order_date = CURRENT_DATE;

-- 최근 90일 동안 주문하지 않은 고객 찾기
SELECT * FROM customers
WHERE customer_id NOT IN (
SELECT DISTINCT customer_id
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '90 days'
);

-- 각 주문이 몇 일 전에 주문되었는지 계산
SELECT order_id, order_date,
DATEDIFF(CURRENT_DATE, order_date) AS days_ago
FROM orders;

이 날짜 표현식은 날짜에 대한 복잡한 연산을 수행하는 데 매우 유용합니다. 시간 기반 데이터를 분석하는 데 필수적입니다.

그렇게 해서, 여러분! 우리는 SQL 표현식의 세계를 여행했습니다. 부울 논리에서 수학 문제, 그리고 시간 여행(sort of)까지! 연습이 완벽을 만든다는 것을 기억하세요, 그래서 자신의 쿼리에서 이 표현식들을 실험해 보지 마세요.

이제 끝내기 전에, 여러분에게 SQL 이드iom 하나를 줄게요: 데이터베이스 관리자가 왜 그의 아내를 떠났을까요? 그녀는 다대일 관계가 있었기 때문입니다! (바둥!)

기쁜 쿼리 작성을 기원하며, 조인이 항상 빠르고 쿼리가 시간이 지나지 않도록 하세요!

Credits: Image by storyset