aajin126's devlog

[Database] SQL(3) 본문

Computer Science/Database

[Database] SQL(3)

aajin126 2023. 4. 14. 03:53

저장 프로시저 (Stored Procedure)

  • 대부분의 데이터베이스는 저장 프로시저라는 기능을 제공한다.
  • 관계 데이터베이스를 위한 표준 데이터 언어인 SQL에 절차적인 언어의 기능 (IF-THEN, WHILE 루프 등)을 추가하여 확장한 언어이다.
DELIMITER $$
CREATE PROCEDURE 스토어드_프로시저_이름(IN 또는 OUT 매개변수)
BEGIN
-- SQL 프로그래밍 코딩 --
END $$
DELIMITER;

CALL 스토어드_프로시저_이름();

IN 또는 OUT 매개변수 사용법

  • IN  입력_매개변수_이름  데이터_형식 
  • CALL  스토어드_프로시저_이름(전달_값)

  • OUT  출력_매개변수_이름  데이터_형식
  • CALL  스토어드_프로시저_이름(@변수명) 
  • SELECT @변수명
DELIMITER $$
CREATE PROCEDURE GetEmployee2(IN Name char(10))
BEGIN 
     SELECT EMPNAME, EMPNO, DNO
     FROM EMPLOYEE
     WHERE EMPNAME = Name;
END $$
DELIMITER ;

--EMPNAME이 김상원인 조건을 검색!
CALL GetEmployee2('김상원');
DELIMITER $$
CREATE PROCEDURE GetEmployee3(IN Name char(10), OUT Sal int)
BEGIN
     SELECT salary INTO Sal
     FROM  EMPLOYEE
     WHERE EMPNAME = Name;
END $$
DELIMITER ;

CALL GetEmployee3('김상원', @Sal)
SELECT @Sal;

트리거(trigger)

  • 명시된 이벤트(INSERT, DELETE, UPDATE)가 발생할 때마다 DBMS가 자동적으로 수행하는, 사용자가 정의하는 문(PROCEDURE)이다.
  • 데이터베이스의 무결성을 유지(데이터의 결함이 없도록)하기 위한 일반적이고 강력한 도구이다.
  • 테이블 정의 시 표현할 수 없는 기업의 비즈니스 규칙들을 시행하는 역할이다.
  • 트리거를 명시하려면 트리거를 활성화시키는 사건인 이벤트, 트리거가 활성화되고 조건이 참일 때 수행되는 문인 동작을 표현해야 한다.
  • SQL3 표준에 포함되었으며 대부분의 상용 관계 DBMS에서 제공된다.
DELIMITER //
CREATE TRIGGER testTrg
      AFTER DELETE -- 삭제 이벤트 후에 진행
      ON EMPLOYEE -- 트리거를 부착할 테이블
      FOR EACH ROW
BEGIN
  SET @msg = '직원이 삭제됨'; -- 트리거 실행 시 작동되는 코드
END //
DELIMITER ;

--DELETE 이벤트 실행 
DELETE FROM EMPLOYEE
WHERE EMPNAME = '김상원';
SELECT @msg;

참고)

 Ewha Woman Univ. Database (2023-1. Prof. InKi Lee)

'Computer Science > Database' 카테고리의 다른 글

[Database] 릴레이션 정규화  (0) 2023.05.24
[Database] 데이터베이스 설계와 ER 모델(1)  (0) 2023.04.14
[Database]SQL(2)  (0) 2023.04.14
[Database] SQL(1)  (0) 2023.04.10
[Database] 관계 대수(2)  (0) 2023.04.04
Comments