SQLD 자격증 대비
변환 함수, 그룹(집계) 함수, NULL 함수, NULL 치환 함수 학습하기
SQL은 데이터베이스에서 데이터를 처리하고 변환하는 데 필수적인 언어이며,
SQLD 자격증 시험에서도 함수의 개념과 활용법이 중요한 부분을 차지합니다.
이번 글에서는 변환 함수, 그룹(집계) 함수, NULL 함수, NULL 치환 함수에 대해
오라클, MySQL, SQL Server 환경에서 각각의 쿼리 작성법과 사용 예제를 소개하겠습니다.
1. 변환 함수 (Conversion Functions)
변환 함수는 데이터의 형식을 변환하거나 타입을 변경하는 데 사용됩니다.
숫자형, 문자형, 날짜형 데이터 간의 변환이 필요할 때 유용합니다.
1-1. 숫자 → 문자 변환
- TO_CHAR(Oracle): 숫자나 날짜 데이터를 문자형으로 변환.
- CAST(MySQL, SQL Server): 다양한 데이터 타입 간 변환.
Oracle
SELECT TO_CHAR(12345, '99999') AS CharValue FROM DUAL;
MySQL
SELECT CAST(12345 AS CHAR) AS CharValue;
SQL Server
SELECT CAST(12345 AS VARCHAR) AS CharValue;
출력 결과
CharValue |
12345 |
1-2. 문자 → 숫자 변환
- TO_NUMBER(Oracle): 문자 데이터를 숫자형으로 변환.
- CAST(MySQL, SQL Server): 숫자형으로 변환.
Oracle
SELECT TO_NUMBER('12345') AS NumericValue FROM DUAL;
MySQL
SELECT CAST('12345' AS UNSIGNED) AS NumericValue;
SQL Server
SELECT CAST('12345' AS INT) AS NumericValue;
출력 결과
NumericValue |
12345 |
1-3. 날짜 → 문자 변환
- TO_CHAR(Oracle): 날짜 데이터를 문자형으로 변환.
- DATE_FORMAT(MySQL): 날짜를 특정 형식으로 변환.
- FORMAT(SQL Server): 날짜를 문자형으로 변환.
Oracle
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS CharDate FROM DUAL;
MySQL
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS CharDate;
SQL Server
SELECT FORMAT(GETDATE(), 'yyyy-MM-dd') AS CharDate;
출력 결과
CharDate |
2025-01-24 |
2. 그룹(집계) 함수 (Aggregate Functions)
그룹 함수는 여러 행의 데이터를 하나의 값으로 요약할 때 사용됩니다.
SUM, AVG, COUNT, MAX, MIN 등이 대표적인 그룹 함수입니다.
2-1. SUM: 합계 계산
- 특정 열의 값을 모두 더한 합계를 반환.
Oracle, MySQL, SQL Server
SELECT SUM(Salary) AS TotalSalary FROM Employees;
2-2. AVG: 평균 계산
- 특정 열의 평균값을 계산.
Oracle, MySQL, SQL Server
SELECT AVG(Salary) AS AverageSalary FROM Employees;
2-3. COUNT: 행의 개수 계산
- 테이블에서 행의 개수를 반환.
Oracle, MySQL, SQL Server
SELECT COUNT(*) AS TotalEmployees FROM Employees;
2-4. MAX, MIN: 최대값과 최소값
- 특정 열의 최대값과 최소값을 반환.
Oracle, MySQL, SQL Server
SELECT MAX(Salary) AS MaxSalary, MIN(Salary) AS MinSalary FROM Employees;
3. NULL 함수 (Functions for NULL)
NULL은 데이터가 존재하지 않음을 의미합니다.
NULL 값을 처리하기 위해 NVL(Oracle), IFNULL(MySQL), ISNULL(SQL Server) 같은 함수가 사용됩니다.
3-1. NVL, IFNULL, ISNULL: NULL 값 대체
- NULL 값을 특정 값으로 대체.
Oracle
SELECT NVL(Salary, 0) AS SalaryWithDefault FROM Employees;
MySQL
SELECT IFNULL(Salary, 0) AS SalaryWithDefault FROM Employees;
SQL Server
SELECT ISNULL(Salary, 0) AS SalaryWithDefault FROM Employees;
출력 결과
SalaryWithDefault |
0 |
3-2. NULL 여부 확인
- 데이터가 NULL인지 확인하는 조건문.
Oracle, MySQL, SQL Server
SELECT EmployeeName, CASE WHEN Salary IS NULL THEN 'No Salary'
ELSE 'Has Salary'
END AS SalaryStatus
FROM Employees;
출력 결과
EmployeeName | SalaryStatus |
홍길동 | No Salary |
김철수 | Has Salary |
4. NULL 치환 함수
NULL 치환 함수는 NULL 값을 다른 값으로 변경합니다.
앞서 살펴본 NVL, IFNULL, ISNULL도 NULL 치환 함수로 사용됩니다.
4-1. COALESCE: 여러 값 중 NULL이 아닌 첫 번째 값 반환
- COALESCE는 여러 열을 입력받아 NULL이 아닌 첫 번째 값을 반환합니다.
Oracle, MySQL, SQL Server
SELECT COALESCE(Salary, Bonus, 0) AS FinalSalary FROM Employees;
출력 결과
Salary | Bonus | FinalSalary |
NULL | 500 | 500 |
1000 | NULL | 1000 |
NULL | NULL | 0 |
설명
- Salary가 NULL이면 Bonus 값을 반환.
- Bonus도 NULL이면 0을 반환.
4-2. NVL: NULL 값을 다른 값으로 대체 (Oracle 전용)
NVL 함수는 NULL 값을 지정된 다른 값으로 대체하는 Oracle의 전용 함수입니다.
- 다른 DBMS에서는 COALESCE로 대체 가능합니다.
Oracle
SELECT NVL(Salary, 0) AS SalaryWithDefault FROM Employees;
설명
- Salary가 NULL이면 0을 반환.
- NULL이 아닌 경우 Salary 값을 그대로 반환.
4-3. NVL2: NULL 여부에 따라 다른 값 반환 (Oracle 전용)
- NVL2는 값이 NULL인지 아닌지에 따라 다른 값을 반환.
Oracle
SELECT NVL2(Salary, 'Has Salary', 'No Salary') AS SalaryStatus FROM Employees;
출력 결과
Salary | SalaryStatus |
1000 | Has Salary |
NULL | No Salary |
설명:
- Salary가 NULL이 아니면 'Has Salary'를 반환.
- NULL이면 'No Salary'를 반환.
4-4. DECODE: 조건에 따라 값을 반환 (Oracle 전용)
DECODE 함수는 IF-THEN-ELSE와 같은 역할을 하며, 특정 조건에 따라 값을 반환합니다.
- NULL 값에 대한 조건 처리도 가능합니다.
Oracle
SELECT DECODE(Salary, NULL, 'No Salary', Salary) AS SalaryStatus FROM Employees;
설명
- Salary가 NULL이면 'No Salary'를 반환.
- NULL이 아니면 Salary 값을 반환.
5. 오라클, MySQL, SQL Server의 함수 차이점
- NULL 처리
- Oracle: NVL, NVL2 사용.
- MySQL: IFNULL 사용.
- SQL Server: ISNULL 사용.
- 데이터 변환
- Oracle: TO_CHAR, TO_NUMBER.
- MySQL, SQL Server: CAST 또는 CONVERT.
- 날짜 형식 지정
- Oracle: TO_CHAR로 포맷 지정.
- MySQL: DATE_FORMAT으로 포맷 지정.
- SQL Server: FORMAT으로 포맷 지정.
6. 결론 : 데이터를 효율적으로 처리하고 변환하는 데 필수적인 변환, 그룹, NULL 함수
변환 함수, 그룹(집계) 함수, NULL 함수, NULL 치환 함수는 SQL에서 데이터를 효율적으로 처리하고 변환하는 데 필수적인 도구입니다. SQLD 자격증 준비를 위해 각 함수의 동작 원리를 이해하고, 오라클(Oracle), MySQL, SQL Server의 차이점을 비교하며 실습해 보세요. 실제 데이터베이스 환경에서 다양한 함수를 활용하면 문제 해결 능력을 기를 수 있습니다.