데이터베이스에서 NULL 값은 중요한 개념입니다. NULL은 "값이 존재하지 않는다"를 의미하며, 특정 컬럼에 값이 없음을 나타냅니다. 오라클 DB에서는 NULL 값을 적절히 처리하지 않으면 데이터 분석이나 운영 중 오류가 발생할 수 있습니다. 이번 글에서는 오라클 DB에서 NULL 값을 처리하는 방법과 실제 활용 예제를 소개하겠습니다.
1. NULL 값의 기본 이해
- NULL 값의 정의: 데이터가 비어있거나 존재하지 않는 상태.
- 주의 사항:
- NULL은 0(zero)이나 공백(space)과 다릅니다.
- NULL 값과 어떤 값의 비교 연산은 항상 FALSE 또는 UNKNOWN을 반환합니다.
- NULL 값의 처리는 SQL 표준 규칙에 따릅니다.
2. NULL 값 확인 방법
NULL 값을 확인할 때는 일반 비교 연산자(=, != 등)를 사용할 수 없습니다. 대신, 아래 두 가지를 사용해야 합니다.
- IS NULL: 컬럼 값이 NULL인지 확인.
- IS NOT NULL: 컬럼 값이 NULL이 아닌지 확인.
-- NULL 값 확인 예제
SELECT employee_id, first_name
FROM employees
WHERE last_name IS NULL;
-- NULL 값이 아닌 데이터 확인
SELECT employee_id, first_name
FROM employees
WHERE last_name IS NOT NULL;
3. NULL 값 대체: NVL 함수
NVL 함수는 NULL 값을 특정 값으로 대체합니다. 이 함수는 데이터 조회 시 NULL로 인한 예상치 못한 결과를 방지합니다.
구문:
NVL(column_name, replacement_value)
예제:
-- 급여(salary) 컬럼의 NULL 값을 0으로 대체
SELECT employee_id, NVL(salary, 0) AS salary
FROM employees;
-- 이메일 컬럼이 NULL이면 '미등록'으로 표시
SELECT employee_id, NVL(email, '미등록') AS email_status
FROM employees;
4. CASE문을 활용한 NULL 처리
CASE 문은 조건에 따라 NULL 값을 처리할 수 있는 유연한 방법입니다.
예제:
-- 부서별 급여 정보에서 NULL 급여를 "정보 없음"으로 표시
SELECT department_id,
CASE
WHEN salary IS NULL THEN '정보 없음'
ELSE TO_CHAR(salary)
END AS salary_info
FROM employees;
5. COALESCE 함수
COALESCE는 여러 값을 입력받아 첫 번째로 NULL이 아닌 값을 반환합니다. 여러 컬럼 또는 값 중 기본값을 지정할 때 유용합니다.
구문:
COALESCE(value1, value2, ..., default_value)
예제:
-- 이메일이 NULL인 경우 기본 이메일을 설정
SELECT employee_id,
COALESCE(email, 'default@company.com') AS email
FROM employees;
-- 여러 컬럼에서 가장 먼저 값이 있는 데이터를 반환
SELECT COALESCE(address1, address2, '주소 없음') AS address
FROM customers;
6. NULL 관련 주의점
- 집계 함수와 NULL
집계 함수(SUM, AVG, COUNT 등)는 NULL 값을 무시합니다. - -- NULL을 포함한 급여 합계 계산 SELECT SUM(NVL(salary, 0)) AS total_salary FROM employees;
- NULL 값 정렬
오라클 DB에서 NULL 값은 기본적으로 ORDER BY 시 가장 마지막에 정렬됩니다. - -- NULL 값을 맨 앞으로 정렬 SELECT employee_id, salary FROM employees ORDER BY salary NULLS FIRST;
7. 실제 사례로 배우는 NULL 값 처리
사례 1: 고객 연락처 정보 업데이트
고객 테이블에서 전화번호가 없는 경우 기본 전화번호를 입력합니다.
UPDATE customers
SET phone_number = NVL(phone_number, '000-0000-0000')
WHERE phone_number IS NULL;
사례 2: 판매 보고서에서 미판매 데이터 표시
판매 테이블에서 판매량이 NULL인 경우 "0"으로 표시해 정확한 보고서를 생성합니다.
SELECT product_id,
NVL(sales_count, 0) AS sales_count
FROM sales;
사례 3: 복합 키의 NULL 값 처리
복합 키를 사용하는 테이블에서 NULL 값을 기본값으로 대체해 데이터 무결성을 유지합니다.
SELECT COALESCE(region, 'Unknown') || '-' || COALESCE(department, 'None') AS region_department
FROM employee_locations;
결론
오라클 DB에서 NULL 값은 데이터 무결성과 정확성에 중요한 영향을 미칩니다. NULL을 확인하고 적절히 처리하는 방법을 이해하면 데이터 분석과 운영의 신뢰성을 높일 수 있습니다. 위에서 소개한 NVL, COALESCE, CASE 문 등의 활용 방법과 예제를 참고하여 상황에 맞는 최적의 NULL 처리 방안을 적용해 보세요.
'Database' 카테고리의 다른 글
오라클 BETWEEN과 IN 연산자의 이해와 활용 (0) | 2024.12.03 |
---|---|
오라클 DB에서 AND, OR, NOT 논리 연산자 사용법 (0) | 2024.12.03 |
오라클 데이터 타입: VARCHAR2, NUMBER, DATE 이해하기 (0) | 2024.12.03 |
오라클 DISTINCT를 사용한 중복 데이터 제거 (0) | 2024.12.03 |
오라클 ORDER BY로 데이터 정렬하기 (0) | 2024.12.03 |