[SQL] - SQL 프로그래밍

유현민·2022년 3월 17일
0

SQL

목록 보기
26/34

1. 스토어드 프로시저

  • MySQL에서 프로그래밍 기능이 필요할 때 사용하는 데이터베이스 개체
DELIMITER $$
CREATE PROCEDURE(스토어드_프로시어_이름)
BEGIN
(코딩)
END $$
DELIMITER ;
CALL(실행)

2. IF문

IF <조건식> THEN
(코딩)
END IF;
DELIMITER $$
CREATE PROCEDURE ifProc1()
BEGIN
	if 100 = 100 THEN
    	SELECT '100은 100과 같습니다.';
    END IF;
END $$
DELIMITER ;
CALL ifProc1();

3. IF ~ ELSE 문

DROP PROCEDURE IF EXISTS ifProc2;
DELIMITER $$
CREATE PROCEDURE ifProc2()
BEGIN
DECLARE myNum INT;
SET myNum = 200;
IF myNum = 100 THEN
SELECT '100입니다.';
ELSE
SELECT '100이 아닙니다.';
END IF;
END $$
DELIMITER ;
CALL ifProc2();

4. CASE 문

CASE
WHEN 조건1 THEN
SQL
WHEN 조건2 THEN
SQL
WHEN 조건3 THEN
SQL
ELSE
SQL
END CASE;
DELIMITER $$
CREATE PROCEDURE caseProc()
BEGIN
DECLARE point INT ;
DECLARE credit CHAR(1);
SET point = 88 ;

CASE
WHEN point >= 90 THEN
SET credit = 'A';
WHEN point >= 80 THEN
SET credit = 'B';
WHEN point >= 70 THEN
SET credit = 'C';
WHEN point >= 60 THEN
SET credit = 'D';
ELSE
SET credit = 'F';
END CASE;
SELECT CONCAT('취득점수==>', point), CONCAT('학점==>', credit);
END $$
DELIMITER ;
CALL caseProc();

5. WHILE 문

WHILE <조건식> DO
SQL
END WHILE;
DELIMITER $$
CREATE PROCEDURE whileProc()
BEGIN
DECLARE i INT;
DECLARE hap INT;
SET i = 1;
SET hap = 0;
WHILE(i <= 100) DO
SET hap = hap + i;
SET i = i + 1;
END WHILE;
SELECT '1부터 100까지의 합 ==>', hap;
END $$
DELIMITER ;
CALL whileProc();

6. 동적 SQL

  • SQL 문은 내용이 고정되어 있는 경우가 대부분이다. 상황에 따라 내용 변경이 필요할 때 동적 SQL을 사용한다.
PREPARE myQuery FROM 'SELECT * FROM member WHERE mem_id = "BLK"';
EXCUTE myQuery;
DEALLOCATE PREPARE myQuery;(해제)

이렇게 미리 SQL을 준비한 후에 나중에 실행하는 것을 동적 SQL이라고 부른다.

7. 동적 SQL 활용

  • ?로 향후에 입력될 값을 비워 놓고 USING으로 ?에 값을 전달할 수 있다.
CREATE TABLE gate_table (id INT AUTO_INCREMENT PRIMARY KEY, entry_time DATETIME);

SET @curDate = CURRENT_TIMESTAMP();

PREPARE myQuery FROM 'INSERT INTO gate_table VALUES(NULL, ?)';
EXECUTE myQuery USING @curDate;
DEALLOCATE PREPATE myQuery;

SELECT * FROM gate_table;


profile
smilegate

0개의 댓글