SQL

SQL 산술 연산자와 NULL 컬럼에 따른 연산 결과

초코너무조코 2025. 1. 23. 14:25
728x90

SQL에서 산술 연산자는 숫자 데이터를 처리할 때 사용하는 중요한 도구입니다. 하지만, 데이터베이스에서 NULL 값을 포함한 연산이 어떻게 처리되는지에 대해 이해하는 것이 중요합니다. 이 포스트에서는 SQL 산술 연산자와 함께 NULL 값이 포함될 경우의 처리 결과에 대해 자세히 설명하겠습니다.


1. SQL 산술 연산자 (Arithmetic Operators)

SQL에서 산술 연산자는 주로 숫자 데이터를 처리하는 데 사용됩니다. 기본적인 산술 연산자는 다음과 같습니다.

주요 산술 연산자

  • +: 덧셈 (Addition)
  • -: 뺄셈 (Subtraction)
  • *: 곱셈 (Multiplication)
  • /: 나눗셈 (Division)
  • %: 나머지 (Modulo)

예시 1: 덧셈

SELECT 10 + 5 AS result;

결과: 15

예시 2: 뺄셈

SELECT 10 - 5 AS result;

결과: 5

예시 3: 곱셈

SELECT 10 * 5 AS result;

결과: 50

예시 4: 나눗셈

SELECT 10 / 2 AS result;

결과: 5

예시 5: 나머지

SELECT 10 % 3 AS result;

결과: 1


2. NULL 값과 산술 연산자

NULL은 SQL에서 알 수 없는 값을 나타냅니다. NULL 값은 특별한 값으로 취급되며, 일반적인 산술 연산자와 결합될 때 특별한 규칙을 따릅니다. SQL에서 NULL은 무효값 (Unknown)을 의미하기 때문에, NULL과의 연산 결과는 항상 NULL입니다.

NULL을 포함한 산술 연산 예시

1) 덧셈 연산

NULL과 숫자를 더하면 결과는 NULL입니다. 이는 NULL이 "알 수 없는 값"이기 때문에, 그 값과의 연산 결과도 "알 수 없음"이 된다는 논리입니다.

SELECT NULL + 5 AS result;

결과: NULL

2) 뺄셈 연산

NULL에서 숫자를 빼면 결과는 역시 NULL입니다.

SELECT NULL - 5 AS result;

결과: NULL

3) 곱셈 연산

NULL과 숫자를 곱해도 결과는 NULL입니다.

SELECT NULL * 5 AS result;

결과: NULL

4) 나눗셈 연산

NULL을 숫자로 나누어도 결과는 NULL입니다.

SELECT NULL / 5 AS result;

결과: NULL

5) 나머지 연산

NULL을 다른 숫자로 나눈 나머지도 결과는 NULL입니다.

SELECT NULL % 5 AS result;

결과: NULL


3. NULL 연산 결과의 특성

NULL과의 연산은 예측할 수 없는 결과를 초래하므로 NULL 값은 항상 NULL로 처리됩니다. 이는 NULL이 "알 수 없는 값"을 나타내기 때문에, 그 값과의 모든 연산 결과도 "알 수 없음"으로 처리되기 때문입니다.

NULL과 비교 연산자

NULL은 비교 연산자 (=, !=, <, >, 등)와 함께 사용할 때도 특별한 처리가 필요합니다. 예를 들어, NULL과 = 연산자를 비교하면 결과는 **FALSE**가 아니라 **UNKNOWN**이 됩니다.

예시: NULL과 = 연산자

SELECT * FROM employees
WHERE salary = NULL;

결과: 아무것도 반환되지 않음

  • NULL 값은 비교 불가이므로 = 연산자와 비교하는 것은 의미가 없습니다. 대신 IS NULL을 사용해야 합니다.

예시: NULL과 IS NULL

SELECT * FROM employees
WHERE salary IS NULL;

설명: NULL 값은 IS NULL로 비교해야만 결과를 얻을 수 있습니다.


4. NULL 값 처리 방법

SQL에서 NULL 값은 연산에서 예외적인 처리가 필요하지만, 이를 적절히 처리하는 방법도 있습니다. COALESCE나 NVL 함수와 같은 함수를 사용하여 NULL을 다른 값으로 대체할 수 있습니다.

1) COALESCE 함수

COALESCE 함수는 NULL을 다른 값으로 대체할 때 사용됩니다. 여러 인자 중 첫 번째로 NULL이 아닌 값을 반환합니다.

예시: NULL을 0으로 대체

SELECT COALESCE(salary, 0) FROM employees;
  • 설명: salary 값이 NULL인 경우, 0으로 대체합니다.

2) NVL 함수 (Oracle 전용)

Oracle에서는 NVL 함수를 사용하여 NULL을 다른 값으로 변환할 수 있습니다.

예시: NULL을 0으로 대체

SELECT NVL(salary, 0) FROM employees;
  • 설명: salary 값이 NULL인 경우, 0으로 대체합니다.

5. 실용적인 예시

NULL 값을 다룰 때는 그 자체로 연산에 영향을 미칠 수 있기 때문에, 이를 고려한 쿼리 작성이 중요합니다.

예시 1: NULL을 포함한 총 급여 계산

만약 급여에 NULL 값이 포함된 테이블에서 총 급여를 구하려면 NULL을 무시하는 방식으로 연산할 수 있습니다.

예시: NULL 값을 제외한 급여 합계

SELECT SUM(COALESCE(salary, 0)) AS total_salary
FROM employees;
  • 설명: salary 값이 NULL일 경우 0으로 대체하고, 그 값을 합산합니다.

예시 2: NULL을 고려한 평균 급여 계산

평균 급여를 계산할 때도 NULL 값을 처리해야 합니다.

예시: NULL 값을 제외하고 평균 급여 계산

SELECT AVG(COALESCE(salary, 0)) AS avg_salary
FROM employees;
  • 설명: NULL을 0으로 대체하고 평균을 계산합니다.

6. 정리

산술 연산자

  • +, -, *, /, %와 같은 산술 연산자는 숫자 데이터를 처리할 때 사용됩니다.

NULL 값의 특성

  • NULL알 수 없는 값을 의미하므로, NULL과의 연산 결과는 항상 NULL입니다.
  • NULL을 다룰 때는 IS NULL 또는 COALESCE/NVL 함수로 처리해야 합니다.

SQL에서 NULL을 처리하는 방식은 데이터의 정확성과 신뢰성을 유지하기 위해 매우 중요합니다. 연산자와 함수들을 적절히 활용하여 NULL 값을 처리하는 방법을 숙지하면, 더 효율적이고 정확한 쿼리 작성이 가능합니다.

 

728x90