MariaDB 날짜/시간 및 제어 흐름 함수

유방현·2024년 10월 28일

MariaDB 날짜/시간 및 제어 흐름 함수

1. 날짜 및 시간 함수

현재 날짜/시간 조회

함수설명예시결과
NOW()현재 날짜와 시간SELECT NOW();2024-10-24 14:30:00
CURDATE()현재 날짜만SELECT CURDATE();2024-10-24
CURTIME()현재 시간만SELECT CURTIME();14:30:00

날짜/시간 추출

함수설명예시결과
YEAR()연도 추출SELECT YEAR(NOW());2024
MONTH()월 추출SELECT MONTH(NOW());10
DAY()일 추출SELECT DAY(NOW());24
TIME()시간 부분 추출SELECT TIME(NOW());14:30:00
DAYNAME()요일 이름SELECT DAYNAME('2024-10-24');Thursday

날짜 연산

함수설명예시
DATE_ADD()날짜 더하기SELECT DATE_ADD(NOW(), INTERVAL 7 DAY);
DATE_SUB()날짜 빼기SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);
DATEDIFF()두 날짜의 차이(일)SELECT DATEDIFF('2024-12-31', '2024-01-01');

날짜 형식 변환

함수설명예시
DATE_FORMAT()날짜 형식 지정SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
STR_TO_DATE()문자열을 날짜로 변환SELECT STR_TO_DATE('24-10-2024', '%d-%m-%Y');

한글 날짜 설정

-- 한글 날짜 설정
SET lc_time_names = 'ko_KR';
SELECT DAYNAME('2024-10-25');  -- 결과: '금요일'

2. 제어 흐름 함수

IF 함수

-- 기본 구문
IF(condition, true_value, false_value)

-- 예시
SELECT IF(SALARY > 3000, 'High', 'Low') FROM EMP;

IFNULL 함수

  • 첫 번째 인수가 NULL이면 두 번째 인수를 반환하고, 그렇지 않으면 첫 번째 인수를 반환합니다.
  • 실무 활용: NULL 값을 다른 값으로 대체할 때 자주 사용됩니다.
-- 기본 구문
IFNULL(expression, value_if_null)

-- 예시
SELECT sal, comm, sal*12 + IFNULL(comm, 0) FROM emp;

CASE 문

  • 여러 조건을 평가하여 조건에 맞는 값을 반환합니다. IF-ELSE 구조와 유사하지만, 복잡한 논리 흐름을 처리할 때 유용합니다.
  • 실무 활용: 여러 조건을 처리하여 그에 맞는 값을 반환할 때 사용됩니다.
-- 기본 구문
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE resultN
END;

-- 예시: 직책별 급여 인상
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;

DECODE_ORACLE 함수

  • Oracle의 DECODE() 함수와 유사하게 동작하는 함수로, 조건에 따라 특정 값을 반환하는 역할을 합니다. 이 함수는 특히 MariaDB에서 Oracle 호환성을 고려하여 사용할 수 있습니다
  • expression: 비교할 값입니다.
  • search: expression과 비교할 값입니다.
  • result: search와 일치할 경우 반환할 값입니다.
  • default: 모든 search 값과 일치하지 않을 때 반환할 기본값입니다.
-- 기본 구문
DECODE_ORACLE(expression, search1, result1, [search2, result2, ...], default)

-- 예시
SELECT empno, ename,
    DECODE_ORACLE(job,
        'ANALYST', '분석가',
        'CLERK', '서기',
        'MANAGER', '매니저',
        'SALESMAN', '영업사원',
        '직책 미정') AS 직책명
FROM emp;

3. SQL 스크립트 실행

SOURCE 명령어 사용

SQL 스크립트는 데이터베이스에서 실행할 SQL 명령어들이 모여 있는 파일이나 코드 블록입니다. SQL 스크립트를 통해 여러 명령어를 순차적으로 실행하거나 반복적으로 사용해야 하는 작업을 자동화할 수 있습니다. 주로 .sql 확장자로 저장되며, 데이터베이스 구조 생성, 데이터 삽입, 변경, 삭제와 같은 작업을 포함할 수 있습니다.

-- Windows
SOURCE c:/MariaDB/script.sql

-- Mac/Linux
SOURCE /Users/username/MariaDB/script.sql

-- 또는 터미널에서
mysql -u [username] -p < script.sql

실무 활용 팁

  1. 날짜/시간 함수는 로그 기록, 데이터 추적에 필수
  2. 제어 흐름 함수는 복잡한 비즈니스 로직 구현에 활용
  3. CASE 문은 리포트 생성, 데이터 변환에 유용
  4. SQL 스크립트는 반복 작업 자동화에 효과적

0개의 댓글