MySQL CREATE PROCEDURE는 MySQL 데이터베이스에서 저장 프로시저(Stored Procedure)를 생성하는 데 사용됩니다. 저장 프로시저는 재사용 가능한 SQL 코드 블록으로, 데이터베이스 작업을 자동화하거나 복잡한 작업을 단순화하는 데 매우 유용합니다.
CREATE PROCEDURE란?
MySQL의 CREATE PROCEDURE는 하나 이상의 SQL 문으로 구성된 이름이 지정된 프로시저를 생성하는 명령어입니다. 저장 프로시저를 사용하면 반복적인 작업을 줄이고, 복잡한 로직을 쉽게 관리할 수 있습니다. 이는 데이터 무결성 유지, 코드 재사용성 증가, 그리고 애플리케이션 성능 개선에 기여합니다.
CREATE PROCEDURE의 기본 문법
DELIMITER //
CREATE PROCEDURE 프로시저명 (매개변수)
BEGIN
SQL문;
END //
DELIMITER ;
- DELIMITER: MySQL에서 기본 구분자인 ; 대신 다른 구분자를 설정합니다.
- CREATE PROCEDURE: 저장 프로시저를 정의하는 명령어입니다.
- 프로시저명: 생성할 저장 프로시저의 이름입니다.
- 매개변수(Parameter): 프로시저가 입력받거나 반환하는 값입니다.
- BEGIN ... END: SQL 문 블록을 정의하는 구문입니다.
매개변수의 유형
- IN: 호출 시 값을 전달합니다(기본값).
- OUT: 호출 후 값을 반환합니다.
- INOUT: 값을 전달받고 반환할 수 있습니다.
예제: 간단한 저장 프로시저 생성
아래는 두 개의 숫자를 입력받아 합계를 출력하는 간단한 저장 프로시저입니다.
DELIMITER //
CREATE PROCEDURE AddNumbers(IN num1 INT, IN num2 INT, OUT sum INT)
BEGIN
SET sum = num1 + num2;
END //
DELIMITER ;
호출 예제
CALL AddNumbers(10, 20, @result);
SELECT @result;
결과는 @result에 저장되어 30이 출력됩니다.
실제 비즈니스에서의 활용 예
1. 판매 데이터 분석
주어진 기간 동안의 총 판매액을 계산하는 프로시저를 생성할 수 있습니다.
DELIMITER //
CREATE PROCEDURE TotalSales(IN startDate DATE, IN endDate DATE, OUT total DECIMAL(10,2))
BEGIN
SELECT SUM(amount) INTO total
FROM sales
WHERE sale_date BETWEEN startDate AND endDate;
END //
DELIMITER ;
2. 재고 업데이트
특정 상품의 재고 수량을 업데이트하는 프로시저입니다.
DELIMITER //
CREATE PROCEDURE UpdateStock(IN productId INT, IN newStock INT)
BEGIN
UPDATE products
SET stock = newStock
WHERE id = productId;
END //
DELIMITER ;
CREATE PROCEDURE의 장점
- 반복 작업 자동화: 동일한 작업을 반복적으로 수행해야 할 때 코드 재사용성을 높여줍니다.
- 복잡한 로직 캡슐화: 여러 SQL 문을 단일 엔드포인트로 처리할 수 있어 유지보수성을 높입니다.
- 보안성 향상: 저장 프로시저 내부에서 데이터 접근을 제한하여 데이터 무결성을 보호할 수 있습니다.
- 성능 최적화: 클라이언트와 서버 간의 데이터 전송을 줄이고, 실행 계획을 캐싱하여 속도를 높입니다.
저장 프로시저 관리
- 프로시저 수정: 저장 프로시저는 CREATE PROCEDURE 명령어로 수정할 수 없습니다. 대신 삭제한 후 다시 생성해야 합니다.
- 삭제: 저장 프로시저를 삭제하려면 DROP PROCEDURE 프로시저명을 사용합니다.
예제: 저장 프로시저를 활용한 사용자 관리
아래는 새로운 사용자를 데이터베이스에 추가하는 저장 프로시저입니다.
DELIMITER //
CREATE PROCEDURE AddUser(IN username VARCHAR(50), IN email VARCHAR(100))
BEGIN
INSERT INTO users (username, email, created_at)
VALUES (username, email, NOW());
END //
DELIMITER ;
호출 방법
CALL AddUser('john_doe', 'john@example.com');
결론
MySQL의 CREATE PROCEDURE는 데이터베이스 관리에서 필수적인 도구입니다. 이를 활용하면 SQL 코드 재사용성, 자동화된 데이터 처리, 그리고 애플리케이션 성능을 개선할 수 있습니다. 다양한 매개변수와 SQL 문을 활용해 복잡한 비즈니스 로직을 단순화할 수 있으며, 이를 통해 데이터베이스 작업 효율을 극대화할 수 있습니다.
더 자세한 내용은 MySQL 공식 문서를 참고하세요: https://dev.mysql.com/doc/refman/8.0/en/
'DB' 카테고리의 다른 글
[MySQL] DROP PROCEDURE 완벽 가이드 사용법(프로시저 삭제) (0) | 2025.01.08 |
---|---|
[MySQL] DROP FUNCTION 완벽 가이드 사용법(함수 삭제) (0) | 2025.01.08 |
[MySQL] CREATE FUNCTION 완벽 가이드 사용법(함수 생성) (0) | 2025.01.08 |
[MySQL] DROP EVENT 완벽 가이드 사용법(이벤트 삭제) (0) | 2025.01.08 |
[MySQL] ALTER EVENT 완벽 가이드 사용법(이벤트수정) (0) | 2025.01.08 |
[MySQL] CREATE EVENT 완벽 가이드 사용법(스케줄링) (0) | 2025.01.08 |
[MySQL] REVOKE 완벽 가이드 사용법(권한 제거) (0) | 2025.01.08 |
[MySQL] GRANT 완벽 가이드 사용법(권한 부여) (0) | 2025.01.08 |