1) 데이터베이스 프로그래밍
데이터베이스 프로그래밍
: DBMS에 데이터를 정의하고 저장된 데이터를읽어와 데이터를 변경하는 프로그램을 작성하는 과정
2) 저장 프로그램
프로시저(PROCEDURE)
: 프로그램 로직을 프로시저로 구현하여 객체 형태로 사용한다.
MySQL에서 프로시저(저장 프로그램)를 정의하는 과정
1) 프로그램 정의 ➔ 2) 실행 ➔ 3) 실행 결과 ➔ 4) 개체 확인


-- 선언부(정의) (// 시작 종료 //) ← //, $$, ### 등 기호는 자유 사용
CREATE PROCEDURE AveragePrice ➔ 'AveragePrice'이름의 프로시저 생성
-- 실행부(호출)
CALL AveragePrice(@myValue) ➔ 프로시저 실행: 프로시저 값을 myValue에 담는다.
- 프로시저의 제어문 종류
- DELIMITER
- BEGIN - END
- IF - ELSE
- LOOP
- WHILE
- REPEAT
- RETURN
트리거(TRIGGER)
: 테이블에 대해 특정동작(INSERT, UPDATE, DELETE)이 수행될 때 자동으로 실행되는 저장된 프로그램
- 특징
- 사용자가 직접 호출 안 해도 DBMS가 이벤트 발생 시 자동 실행한다.
- 보통 데이터의 변경문이 처리되기 전(BEFORE), 처리 후(AFTER)에 동작한다.
- 사용 목적
- 데이터 무결성 유지: 잘못된 값 입력 방지, 자동 검증
- 자동 처리: 로그 기록, 변경 이력 관리
- 비즈니스 규칙 적용: 특정 조건 만족 시 자동 계산, 알림 처리
- 연관 테이블 동기화: 다른 테이블에 자동 반영
- 트리거 선언

CREATE TRIGGER 트리거이름 ➔ 트리거 생성
BEFORE INSERT ON 테이블 ➔ 변경문이 처리되기 전에 동작
- 트리거 적용 확인

FROM 테이블이름 ➔ trigger 동작이 반영된 테이블 호출
➔ 동명이인이 존재해서 alert_id로 옮겨졌다.
사용자 정의 함수
: 개발자가 직접 작성하여 SQL 내에서 호출할 수 있는 함수
- 특징
- 기본 제공 함수로 해결하기 어려운 로직을 캡슐화할 때 유용하다.
- SQL에서 자주 쓰는 계산/로직을 '내가 만든 함수'로 등록해두고 필요할 때 호출한다.
- 종류
- 스칼라 함수 ← MySQL에서 일반적인 경우
- 테이블 반환 함수
- 인라인 함수
- 장단점
| 장점 | 단점 |
| SQL 코드 간결화 | 잘못 사용 시 성능 저하 기능 |
| 유지보수 용이 | |
| 재사용성 증가 |
- 사용자 정의 함수 예시


CREATE FUNCTION 함수이름(인자 데이터성질) ➔ 함수 생성
[ + ] DETERMINISTIC = 입력이 같으면 결과도 항상 같다는 의미 (but, 관례상 자주 쓰인다.)

함수를 설정한 경우, 위와 같이 데이터베이스 아래에 생성된다.
[ ! ] 저장 프로그램 특징 비교
- 프로시저: 여러 SQL문의 묶음으로 단순 반복 업무에 권장한다.
ex) 쇼핑몰 주문처리
- 트리거: 특정 이벤트가 발생할 때 자동 실행된다. ➔ but 잘못 사용하면 오히려 악화되는 경우가 많다.
ex) 은행 계좌 잔액 자동 검증 ➔ 데이터 무결성을 보장한다.
- 사용자 정의 함수: 입력을 받아 단일 값 또는 테이블을 리턴한다.
ex) 은행시스템에서 고객의 생년월일을 받아 나이 계산하는 경우
-- 모든 실습은 MariaDB, HeidiSQL을 사용해 이루어졌습니다.
[목차여기]
'[CODE] > Database' 카테고리의 다른 글
| [DB] MySQL DB 생성, MySQL - GitHub - eclipse 연결 (0) | 2026.05.19 |
|---|---|
| [DB] 6. JDBC 연결 및 개념 (0) | 2026.04.10 |
| [DB] 4. SQL 고급(2) - 뷰, 인덱스 (0) | 2026.04.09 |
| [DB] 4. SQL 고급(1) - 내장함수, NULL, 비교문, 부속질의 (0) | 2026.04.03 |
| [DB] 3. SQL 기초(2) - 부속질의, 데이터 정의어, 데이터 조작어 (0) | 2026.03.26 |