[Day 10 | DB] MariaDB 내장 함수: 제어 흐름 함수 (Control Flow Functions)

y♡ding·2024년 10월 25일
0

데브코스 TIL

목록 보기
63/163

SQL에서 제어 흐름 함수는 조건에 따라 다르게 결과를 반환하거나 처리할 수 있도록 하는 기능을 제공합니다. 이는 조건부 연산값 대체에 유용하게 사용됩니다.


1. IF() 함수

함수설명예시결과 예시
IF()조건이 참일 때 첫 번째 값을, 거짓일 때 두 번째 값을 반환SELECT IF(1 = 2, '참', '거짓');'거짓'
SELECT ename, sal, IF(sal < 2000, '적음', '많음') FROM emp;'적음' or '많음'
예제
SELECT ename, sal, IF(sal < 2000, '적음', '많음') FROM emp;

2. IFNULL() 함수

함수설명예시결과 예시
IFNULL()첫 번째 값이 NULL일 경우 두 번째 값을 반환SELECT IFNULL(comm, 0) FROM emp;0 (NULL일 경우)
예제
-- 커미션이 NULL일 경우 0으로 대체
SELECT sal, comm, sal * 12 + IFNULL(comm, 0) FROM emp;

3. CASE 문

구문설명예시결과 예시
CASE여러 조건을 평가하여 맞는 결과 반환SELECT CASE WHEN deptno = 10 THEN '관리' ELSE '직원' END AS 직책명 FROM emp;'관리' 또는 '직원'
예제
-- 부서 번호에 따른 급여 인상률 적용
SELECT empno, ename, deptno, sal AS '현재급여',
       CASE deptno
           WHEN 10 THEN sal * 1.1
           WHEN 20 THEN sal * 1.2
           ELSE sal
       END AS '인상급여'
FROM emp;
empnoenamedeptno현재급여인상급여
7369SMITH20800.00960.00
7499ALLEN301600.001600.00

4. DECODE_ORACLE() 함수

DECODE_ORACLE() 함수는 조건에 따라 값을 반환하는 함수로, Oracle의 DECODE와 유사합니다. 값이 지정된 조건과 일치할 경우 해당 결과를 반환하고, 그렇지 않으면 기본값을 반환합니다.

함수설명예시결과 예시
DECODE_ORACLE()주어진 조건에 따라 다른 값을 반환SELECT DECODE_ORACLE(job, 'ANALYST', '분석가', 'CLERK', '서기', '매니저', '기타') FROM emp;'분석가', '서기', '매니저', '기타'
예제
SELECT empno, ename,
       DECODE_ORACLE(job, 'ANALYST', '분석가', 'CLERK', '서기', 'MANAGER', '매니저', 'SALESMAN', '영업사원', '직책 미정') AS 직책명
FROM emp;

SQL 스크립트 작성 및 실행

SQL 스크립트는 여러 SQL 문을 한 번에 실행할 수 있도록 외부 파일에 저장한 것입니다. 이를 통해 반복되는 작업을 자동화할 수 있습니다. .sql 확장자로 저장하며, 데이터 삽입, 업데이트, 삭제와 같은 작업을 포함할 수 있습니다.

  • SOURCE 명령어를 사용하여 파일 실행:
-- SQL 스크립트 파일 실행
SOURCE /path/to/your_script.sql;
-- Windows 예시
SOURCE C:/MariaDB/ex03.sql;
-- Mac/Linux 예시
SOURCE /Users/your_name/MariaDB/ex03.sql;

스크립트 예제 (ex03.sql)

-- 직책별로 한국어 명칭 출력
SELECT ename, sal,
       CASE job
           WHEN 'ANALYST' THEN '조사'
           WHEN 'CLERK' THEN '사원'
           WHEN 'MANAGER' THEN '관리'
           WHEN 'PRESIDENT' THEN '대표'
           ELSE '영업'
       END AS '한글명 표시'
FROM emp
WHERE deptno = 30;

예제 2: 급여 인상률 계산

-- 직책별로 급여 인상 적용
SELECT empno, ename, job, sal AS '현재급여',
       CASE
           WHEN job = 'ANALYST' THEN sal * 1.1
           WHEN job = 'CLERK' THEN sal * 1.5
           WHEN job = 'MANAGER' THEN sal * 1.2
           WHEN job = 'SALESMAN' THEN sal * 1.3
           ELSE sal
       END AS '인상급여'
FROM emp;
empnoenamejob현재급여인상급여
7369SMITHCLERK800.001200.00
7566JONESMANAGER2975.003570.00

이와 같이 제어 흐름 함수스크립트 작성 방법을 활용하면 SQL에서 복잡한 조건 평가 및 자동화된 데이터 작업을 쉽게 처리할 수 있습니다.

0개의 댓글

관련 채용 정보