[CODE]/Database

[DB] 5. 데이터베이스 프로그래밍

원°C 2026. 4. 10. 01:19

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을 사용해 이루어졌습니다.

 

[목차여기]