SQL 산술 연산자 +, -, *, /, DIV, MOD 사용법과 우선순위
SQL에서는 산술 연산자를 통해 숫자 데이터를 더하고 빼고 나누는 등의 연산을 할 수 있습니다. 이 글에서는 SQL에서 사용할 수 있는 산술 연산자의 종류, 특징, 우선순위, 실전 예제까지 상세히 설명합니다.
1. SQL 산술 연산자의 종류와 기능
| 연산자 | 기능 설명 | 예제 | 결과 |
|---|---|---|---|
+ |
덧셈 | 5 + 3 |
8 |
- |
뺄셈 | 10 - 7 |
3 |
* |
곱셈 | 4 * 6 |
24 |
/ |
나눗셈 (실수 반환) | 20 / 4 |
5.0 |
DIV |
정수 나눗셈 (몫 반환) | 20 DIV 3 |
6 |
%, MOD |
나머지 반환 | 20 % 3 |
2 |
✅ DIV는 정수 나눗셈, MOD는 나머지 연산에 사용됩니다.
2. 산술 연산자 사용 예제
SELECT
504.7 + 13 AS Addition,
504.7 * 0.9 AS Multiplication,
504.7 / 2 AS Division,
504.7 DIV 2 AS IntegerDivision,
504.7 % 2 AS Modulus;
| Addition | Multiplication | Division | IntegerDivision | Modulus |
|---|---|---|---|---|
| 517.7 | 454.23 | 252.35 | 252 | 0.7 |
3. 연산자 우선순위 정리
SQL에서는 여러 연산자가 함께 사용될 경우, 우선순위에 따라 연산이 처리됩니다.
주요 산술 연산자 우선순위 (낮은 숫자가 우선)
| 우선순위 | 연산자 |
|---|---|
| 6 | *, /, DIV, %, MOD |
| 7 | +, - (이항) |
| 4 | - (단항), ! |
예제 1: 기본 우선순위
SELECT 10 + 5 * 2 AS Result;
-- 5 * 2 = 10 → 10 + 10 = 20
예제 2: 괄호로 우선순위 변경
SELECT (10 + 5) * 2 AS Result;
-- 10 + 5 = 15 → 15 * 2 = 30
✅ 괄호를 사용하면 연산 순서를 명확히 지정할 수 있습니다.
4. 참고 사항과 실전 팁
4.1. DIV와 MOD 차이
| 연산 | 결과 |
|---|---|
10 DIV 3 |
3 (몫) |
10 MOD 3 |
1 (나머지) |
SELECT 10 DIV 3 AS Quotient, 10 MOD 3 AS Remainder;
4.2. 실수 나눗셈
SELECT 5 / 2 AS Result; -- 결과: 2.5 (소수 포함)
4.3. NULL 값 주의
연산 중 NULL이 포함되면 결과도 NULL이 됩니다.
SELECT 10 + NULL AS Result; -- 결과: NULL
4.4. 복잡한 계산 시 괄호 활용
SELECT (100 + 200) * (5 - 2) AS Total; -- 결과: 900
5. 요약 정리
| 항목 | 설명 |
|---|---|
| 지원 연산자 | +, -, *, /, DIV, MOD, % |
| 실수 나눗셈 | / 사용, 결과는 소수 포함 |
| 정수 나눗셈 | DIV 사용, 소수점 제거 |
| 나머지 연산 | % 또는 MOD 사용 |
| 우선순위 | *, /, DIV > +, - |
| 괄호 사용 | 복잡한 계산에서는 ()로 연산 순서 명확화 |
| NULL 연산 | 결과도 NULL이므로 연산 전 체크 필요 |
질문 정리
- DIV와 /의 차이점은 뭔가요?
/는 소수 포함 실수 나눗셈,DIV는 소수점 이하를 버리고 정수만 반환합니다.
- MOD와 %는 같은가요?
- 네, 동일하게 나머지 값을 반환합니다. 사용 환경에 따라 둘 중 하나를 선택하세요.
- 산술 연산에서 문자열을 사용하면 어떻게 되나요?
- 문자열이 숫자로 변환 가능한 경우 자동 변환되지만, 명시적 변환이 안전합니다.
- NULL 값이 포함된 연산을 피하려면?
IFNULL(값, 대체값)또는COALESCE()함수로 NULL을 처리할 수 있습니다.
- DIV 결과를 소수로 받으려면?
DIV는 정수만 반환하므로/연산자를 사용해야 합니다.
댓글남기기