본문 바로가기
  • Coding & Book
학습단/SQL 학습단

혼공스 11일차(SQL 프로그래밍)

by 루이3 2023. 7. 20.

스토어드 프로시저

  • MySQL에서 프로그래밍 기능이 필요할때 사용하는 데이터베이스 개체 입니다.
  • 스토어드 프로시저는 아래와 같은 구조를 갖습니다.
DELIMITER $$
CREATE PROCEDURE
BEGIN
 # SQL 프로그래밍 코딩
END $$
DELIMITER ;
CALL

 

IF문

  • 조건문으로 가장 많이 사용되는 프로그래밍 문법 중 하나 입니다.
  • 조건식이 참이면 SQL문장들을 실행하고 거짓이면 넘어갑니다.
  • 두문자 이상이 처리되어야 할때는 BEGIN~END로 묶어주는것을 권장합니다.
  • IF~ ELSE문 조건문은 조건에 따라 다른 부분을 수행합니다.
IF <조건식> THEN
	 SQL문장들
END IF;

 

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();

 

 

Case문

  • 여러 조건중에서 선택하는 경우에 사용합니다.
  • Case문은 2가지 이상의 여러가지 경우일때 처리가 가능하므로 다중분기라고 부릅니다.
  • Case와 END CASE 사이에 WHEN을 반복해서 여러 조건을 넣을수 있습니다.
DROP PROCEDURE IF EXISTS caseProc; 
DELIMITER $$
CREATE PROCEDURE caseProc()
BEGIN
    DECLARE point INT ;
    DECLARE credit CHAR(1);
    SET point = 65 ;
    
    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();

WHILE문

  • 필요한 만큼 계속 같은 내용을 반복하기 위해 사용합니다.
  • 조건식이 참인 동안에 SQL문장들을 계속 반복합니다.
  • ITERATE[테이블] 은 지정한 레이블로 가서 계속 진행합니다.
  • LEAVE[테이블] 은 지정한 레이블을 빠져나갑니다.(WHILE문 종료)
WHILE <조건식> DO
	SQL 문장들
END WHILE;

 

1~100 까지의 합(4의배수 제외,총합 1000 이하) 예시

DROP PROCEDURE IF EXISTS whileProc2; 
DELIMITER $$
CREATE PROCEDURE whileProc2()
BEGIN
    DECLARE i INT;
    DECLARE hap INT;
    
    SET i = 1;
    SET hap = 0;

    myWhile: 
    WHILE (i <= 100) DO
       IF (i%4 = 0) THEN
         SET i = i + 1;     
         ITERATE myWhile;
       END IF;
       SET hap = hap + i; 
       IF (hap > 1000) THEN 
         LEAVE myWhile;
       END IF;
       SET i = i + 1;
    END WHILE;

    SELECT hap; 
END $$
DELIMITER ;
CALL whileProc2();

 

 

동적 SQL

  • PREPARE는SQL문을 실행시키지 않고 준비를 해놓습니다.
  • EXECUTE는 준비한 SQL 문을 실행합니다.
  • 위의 2개의 방식을 동적 SQL이라고 부릅니다.
use market_db;
PREPARE myQuery FROM 'SELECT * FROM member WHERE mem_id = "APK';
EXECUTE myQuery;
DEALLOCATE PREPARE myQuery;

'학습단 > SQL 학습단' 카테고리의 다른 글

혼공스 12일차(GUI환경에서 테이블 만들기)  (0) 2023.07.25
3주차 완료  (0) 2023.07.20
혼공스 10일차(조인)  (0) 2023.07.18
혼공스 9일차(데이터 형식에 대해 알아 보자)  (0) 2023.07.17
2주차 완료  (0) 2023.07.14