SQL 6 - 스토어드 프로시저

우수민·2023년 12월 19일
0

강의 자료

목록 보기
15/18
post-thumbnail
  • MySQL의 스토어드 프로시저(stored procedure)는 SQL에 프로그래밍 기능을 추가해서 일반 프로그래밍 언어와 비슷한 효과를 낼 수 있음

스토어드 프로시저 기본

  1. 스토어드 프로시저의 개념과 형식
  • MySQL에서 제공하는 프로그래밍 기능

  • 쿼리 문의 집합으로도 볼 수 있으며, 어떠한 동작을 일괄 처리하기 위한 용도로도 사용

  • 자주 사용하는 일반적인 쿼리를 반복하는 것보다는 스토어드 프로시저로 묶어 놓고, 필요할 때마다 간단히 호출만 하면 편리하게 운영이 가능

  • 생성 쿼리

	DELIMITER $$
    CREATE PROCEDURE 스토어드_프로시저_이름( IN 또는 OUT 매개변수 )
    BEGIN
    	
        이 부분에 SQL 프로그래밍 코드 작성
    END $$
    DELIMITER;
  • 호출
	CALL 스토어드_프로시저_이름();
  • 삭제
	DROP PROCEDURE 스토어드_프로시저_이름;
  • 입력 매개변수의 활용
	DELIMITER $$
    CREATE PROCEDURE user_proc1(IN userName VARCHAR(10))
    BEGIN
    	SELECT * FROM member WHERE mem_name = userName;
    END $$
    DELIMITER;
    
    CALL user_proc1('테스트');

스토어드 함수와 커서

  • 스토어드 함수는 MySQL에서 제공하는 내장 함수 외에 직접 함수를 만드는 기능을 제공
  • 스토어드 함수는 스토어드 프로시저와 모양이 비슷하지만, 세부적으로 차이가 존재
  • RETURNS 예약어를 통해서 하나의 값을 반환해야 하는 특징이 존재
 	DELIMITER $$
	CREATE FUNCTION 스토어드_함수_이름(매개변수)
		RETURNS 반환형식
    BEGIN
    	이 부분에 프로그래밍 코딩
        RETURN 반환값;
    END $$
    DELIMITER;
    SELECT 스토어드_함수_이름();
  • 스토어드 함수와 스토어드 프로시저의 차이점
    • 스토어드 함수는 RETURNS 문으로 반환할 값의 데이터 형식을 지정하고, 본문 안에서는 RETURN 문으로 하나의 값을 반환
    • 스토어드 함수의 매개변수는 모두 입력 매개변수
    • 스토어드 프로시저는 CALL로 호출하지만, 스토어드 함수는 SELECT 문 안에서 호출
    • 스토어드 프로시저 안에서는 SELECT 문을 사용 할수 있찌만, 스토어드 함수 안에서는 SELECT 사용 불가
    • 스토어드 프로지서는 여러 SQL 문이나 숫자 계산 등의 다양한 용도로 사용하지만, 스토어드 함수는 어떤 계산을 통해서 하나의 값을 반환하는데 주로 사용
  • 스토어드 함수를 사용하기 위해서는 함수 생성 권한 허용 필요
	SET GLOBAL log_bin_trust_function_creators = 1;

자동 실행되는 트리거

  • 트리거(trigger) : 테이블에 INSERT나 UPDATE 또는 DELTE 작업이 발생하면 실행되는 코드
  • 트리거는 자동으로 수행하여 사용자가 추가 작업을 잊어버리는 실수를 방지
  • 트리거를 사용하면 데이터에 오류가 발생하는 것을 막을 수 있다 = 데이터의 무결성
DELIMITER $$
CREATE TRIGGER myTrigger
	AFTER DELETE
    ON trigger_table
    FROM EACH ROW
BEGIN
	SET @msg = '삭제됨' ; -- 트리거 실행 시 작동되는 코드
END $$
DELIMITER;

  • 참고 서적 : 혼자 공부하는 SQL
profile
데이터 분석하고 있습니다

0개의 댓글