[DB] SQL 프로그래밍

touhou09·2025년 1월 11일
0

컴퓨터 이론

목록 보기
39/47

스토어드 프로시저는 MYSQL에서 프로그래밍 기능이 필요할 때 사용하는 DB 개체이다.
SQL 프로그래밍은 기본적으로 프로시저 안에 만들어야 한다.
기본 구조는 아래와 같다.

DELIMITER $$
CREATE PROCEDURE
BEGIN
	SQL 코딩
END $$
DELIMITER ;
CALL 프로시저 이름

IF

IF의 기본 형식

IF <조건식> THEN
	SQL 문장
END IF;

IF ~ ELSE

기본 문장에 대해서 IF문 뒤에 ELSE 구문을 추가하면 된다.

IF의 활용

DELIMITER $$
CREATE PROCEDURE IFPROC()
BEGIN
	DECLARE DATE DATE;
    DECLARE CURDATE DATE;
    DECLARE DAYS INT;
    
    SELECT DATE INTO DATE
    	FROM MEMBER
        WHERE ID = 'ASD';
        
    
    SET CURDATE = CURRENT_DATE();
    SET DAYS = DATEDIFF(CURDATE, DATE);
    
    
    IF (DAYS/365) >= 5 THEN
    	SELECT CONCAT('장기 근속', DAYS, '일 경과')
        
    ELSE
    	SELECT '장기 근속 아님'
        
    END IF;
END $$
DELIMITER ;
CALL IFPROC();

위 예시의 경우에서
1. DECLARE로 변수 준비
2. SELECT 과정에서 INTO 변수
3. CURRENT_DATE로 현재 날짜를 저장
4. DATEDIFF() 를 이용해서 DATE와 CURDATE의 차를 DAYS에 저장
5. 년도 체크

순으로 진행된다.

CASE

CASE의 기본 형식

IF는 2가지만 있기 때문에 '2중 분기'라고도 부르는데 반해 CASE는 여러 분기를 가지는 경우에 처리가 가능하므로 '다중 분기'라고 부른다.

기본 형식은 아래와 같다.

CASE
	WHEN 조건1 THEN
    	SQL
    WHEN 조건2 THEN
    	SQL
    WHEN 조건3 THEN
    	SQL
    WHEN 조건4 THEN
    	SQL
    ELSE
    	SQL
        
END CASE;

WHILE

WHILE의 기본 형식

WHILE 조건식 DO
	SQL
END WHILE;

응용

WHILE은 조건이 참인 동안 반복하기 때문에 단순하지만 중간에 조건이 추가되기 위해서는 아래 두 구문을 이용해야한다.

  • ITERATE [레이블] : 지정한 레이블로 이동 후 계속 진행
  • LEAVE [레이블] : 지정한 레이블을 빠져나가면서 WHILE문 종료

동적 SQL

PREPARE과 EXECUTE

PREPARE는 SQL문을 실행하지는 않고 미리 준비만 하는 구문이며, EXECUTE는 준비한 SQL을 실행하는 구문이다.

또한 실행 후 DEALLOCATE PREFARE로 문장을 해제해주는 것이 좋다.
단순 예제는 아래와 같다.

PREPARE QUE FROM 'SELECT  * FROM MEMBER WHERE ID = "ASD"';
EXECUTE QUE;
DEALLOCATE PREPARE QUE;
profile
Engineer가 되기 위하여

0개의 댓글