SQL 프로그래밍이란 단순한 SELECT, INSERT, UPDATE, DELETE와 같은 기본 SQL 문장을 넘어서, 절차적 로직과 구조를 가진 프로그래밍 방식으로 SQL을 사용하는 것을 말합니다.
MariaDB나 MySQL에서는 이를 위해 SQL/PSM (Persistent Stored Modules) 표준을 따르며, 스토어드 프로시저, 함수, 커서, 조건문, 반복문, 예외 처리 등을 사용할 수 있습니다.
SQL 프로그래밍으로 할 수 있는 것들
| 기능 | 설명 |
| 스토어드 프로시저 | 자주 사용하는 SQL 명령을 묶어서 저장 |
| 스토어드 함수 | 반환값이 있는 함수 형태의 SQL 코드 |
| 커서 | SELECT 결과를 행 단위로 처리 |
| 조건문 (IF, CASE) | 조건에 따라 분기 |
| 반복문 (LOOP, WHILE, REPEAT) | 반복 작업 처리 |
| 예외 처리 (HANDLER) | 오류 상황에 대한 처리 |
SQL 프로그래밍 예시 구조 (MariaDB 기준)
sql>
DELIMITER //
CREATE PROCEDURE process_data()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE val INT;
DECLARE cur CURSOR FOR SELECT number FROM numbers;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO val;
IF done THEN
LEAVE read_loop;
END IF;
— 비즈니스 로직: 예를 들어 짝수만 로그로 저장
IF val % 2 = 0 THEN
INSERT INTO logs (message) VALUES (CONCAT(‘Even number: ‘, val));
END IF;
END LOOP;
CLOSE cur;
END //
DELIMITER ;
주요 요소 요약
| 요소 | 설명 |
| DECLARE | 변수, 커서, 핸들러 등 선언 |
| BEGIN … END | 블록 구조로 로직 감싸기 |
| IF / CASE | 조건문 |
| LOOP / WHILE / REPEAT | 반복문 |
| HANDLER | 예외 처리 |
| CALL | 프로시저 실행: CALL process_data(); |
SQL 프로그래밍을 사용하는 이유
- 💾 비즈니스 로직을 DB로 옮겨 처리 (클라이언트 로직 간소화)
- 🔁 복잡한 반복 처리를 서버에서 직접 실행
- 🔐 보안 및 접근 제어 강화 (직접 테이블 접근 없이 작업 수행)
- ⚙️ 성능 향상 (네트워크 왕복 없이 일괄 처리)
