🌞 스토어드 프로시저
쿼리 문의 집합으로 어떠한 동작을 일괄 처리하기 위한 용도로 사용된다.
CALL 프로시저_이름() 으로 프로시저 호출 가능함
DELIMITER $$
CREATE PROCEDURE 스토어드 프로시저이름( IN 또는 OUT 파라미터 )
BEGIN
이 부분에 SQL 프로그래밍 코딩..
END $$
DELIMITER ;
CALL 스토어드 프로시저이름();
DELIMITER : DELIMITER는 문장의 끝을 나타내는 부분으로 ';'을 뜻한다.
DELIMITER $$ : ';'인 DELIMITER를 '$$'로 바꾼다. 왜 바꾸냐면 스토어드 프로시저에는 여러 개의 ';'를 사용하는데 이를 문장의 끝으로 인식하지 못하게 하기 위해서 이다.
BEGIN ~ END $$ : $$는 DELIMITER BEGIN-END로 문장들을 묶는다.
DELIMITER ; : DELIMITER를 다시 ';'로 바꾼다.
MYSQL의 성능 향상 : 클라이언트에서 서버로 긴 쿼리가 아니라 짧은 프로시저 내용만 전송함 ( 네트워크의 부하가 줄어들면서 MYSQL의 성능이 향상된다.)
유지관리가 간편 : 응용 프로그램에서는 프로시저만 호출한다. 데이터 베이스 단에서 관련된 스토어드 프로시저의 내용을 일관되게 수정/유지보수 한다.
모듈식 프로그래밍 가능 : 언제든지 실행이 가능하고 편리한 관리가 가능하다. 모듈식 프로그래밍 언어와 동일한 장점을 가지고 있다.
보안 강화에 편리 : 스토어드 프로시저에만 접근 권한을 부여하여 DB가 안전해진다.
🌞 스토어드 함수
DELIMITER $$
CREATE FUNCTION 스토어드 함수이름(파라미터)
RETURNS 반환형식
BEGIN
이 부분에 프로그래밍 코딩..
RETURN 반환값;
END $$
DELIMITER ;
SELECT 스토어드_함수이름();
🌞 커서
🌞 트리거
테이블에 DML문(Insert, Update, Delete 등) 이벤트가 발생 할 때 작동한다.
(DDL로는 불가)
테이블에 부착되는 프로그램 코드이다.
직접 실행이 불가하며 테이블의 이벤트가 일어나야면 실행이 된다.
IN, OUT 매개 변수를 사용 할 수 없다.
AFTER 트리거
: 일단 DML 작업을 한 이후에 트리거를 실행함
BEFORE 트리거
: DML 작업을 하기 전 트리거를 실행하고 작업을 함
🌞 트리거의 사용
트리거가 생성하는 임시 테이블 DML 작업이 수행되면 임시 사용 시스템테이블이 생성된다. 이름은 NEW와 OLD이다.
🌞 기타트리거
다중 트리거 : 하나의 테이블에 동일한 트리거가 여러 개 부착되어 있는 것
집중 트리거 : 트리거가 또 다른 트리거를 작동시키는 것