[MariaDB] 동적쿼리 (3. 쿼리작성)

0

DATABASE

목록 보기
3/4

그럼 이어서 동적 쿼리를 작성해보겠습니다.

#######################   1. 6일전 테이블 삭제  ##############################################
(1) SET @deletename = CONCAT('DROP TABLE IF EXISTS `','LOG_DATA_',DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -5 DAY), '%Y%m%d'), '`');
(2) PREPARE STMT1 FROM @deletename;
(3) EXECUTE STMT1;
(4) DEALLOCATE PREPARE STMT1;




#######################   2. 테이블명 변경       ###############################################
(5) SET @tablename = 'LOG_DATA';
(6) SET @query = CONCAT('RENAME TABLE `', @tablename, '` TO `', @tablename,'_',DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 DAY),'%Y%m%d'));
(7) PREPARE STMT2 FROM @query;
(8) EXECUTE STMT2;
(9) DEALLOCATE PREPARE STMT2;



#######################   3. 당일 적재될 테이블 생성  ###########################################
(10) CREATE TABLE `LOG_DATA` (
        `LOG_NO` INT(11) NOT NULL AUTO_INCREMENT,
        `LOG_CONTENT` LONGTEXT NULL COLLATE 'utf8_bin',
        `ADD_DATE` DATETIME NULL DEFAULT NULL,
        PRIMARY KEY (`LOG_NO`)
)
(11) COLLATE='utf8_general_ci'
(12) ENGINE=INNODB;


쿼리 분석

(1)

SET : 시스템 변수 설정하는 구문으로 deletename이라는 변수명에 CONCAT을 사용하여 '기본 테이블명 + (현재날짜-5)' 쿼리문을 할당합니다.


(2)

@deletename을 지칭하는 쿼리명을 STMT1로 지정하여 PREPARE합니다.

(3)

쿼리를 실행합니다.

(4)

쿼리명을 해제합니다.

(5) ~ (9)

(1) ~ (4)와 동일합니다.
다른점은 (6)에서 RENAME 문을 사용하여 테이블명을 수정합니다.

(10)

LOG_DATA라는 테이블을 생성합니다.

(11)

문자 인코딩 유형을 설정합니다.

(12)

스토리지 엔진은 INNODB로 설정합니다.

profile
컴퓨터공학과 + 실무 = 4 + N = 모르는거 ∞ ...

0개의 댓글