kjh00n의 기록저장소

변수, 저장 프로시저, 제어문, 저장 함수 본문

DB

변수, 저장 프로시저, 제어문, 저장 함수

kjh00n 2024. 11. 25. 09:56

변수

● 변하는 데이터가 저장되는 메모리 공간

● 변수의 이름은 앞에 @가 들어간다.

 

변수 설정

● SET @[변수명]=['문자데이터'];

● SET @[변수명]=[숫자데이터];

● SELECT [변수명];

※기존의 변수의 데이터값을 덮어씌우기 가능하다.

※변수마다 1개의 데이터만 저장 가능하다


저장 프로시저 (Stored Procedure)

● 여러 개의 SQL문을 원하는 순서로 저장해 두었다가 원하는 시점이나 원하는 상황에서 미리 저장했던 SQL문을 실행하도록 만들어둔 자동 작업이다.

장점 ● 한번의 실행으로 여러 SQL문을 실행할 수 있다.
→ 사용자의 입장에서는 하나의 실행문만 입력
● 주기적으로 해야 하는 작업을 편하게 진행할 수 있다.
● 세부적인 SQL문을 몰라도 해당 프로시저를 실행만 하면 작업을 진행할 수 있다.
→ 보안이 된다.

 

단점 ● 저장 프로시저 안에 어떤 SQL문이 있는지 모르기 때문에 아무 프로시저나 실행해버리면 원하지 않는 작업이 진행된다.
→ 검증되지 않은 프로시저는 실행하지 않는 것이 좋다.

 

구문문자 변경

 

프로시저 생성

→ CREATE PROCEDURE [프로시저명] (입력값) BEGIN [SQL문;] [SQL문;] END [설정한 구문문자]

프로시저 확인

● SHOW PROCEDURE STATUS;

 

특정 프로시저 안의 구조 확인

● SHOW CREATE PROCEDURE [프로시저명];

 

저장된 프로시저 실행

● CALL [프로시저명](입력값);

 

저장된 프로시저 삭제

● DROP PROCEDURE [프로시저명];

 

예제

 

프로시저 내부에 변수 지정

● DECLARE [변수명] [데이터타입];   → 변수 선언

● SET 변수명 = [데이터];   → 변수에 대입

● DECLARE [변수명] [데이터타입] DEFAULT [데이터];   → 변수 초기화


제어문

● 프로그램의 실행 흐름을 제어하기 위한 문법이나 문장

● 프로그래밍으로 코드를 작성 시 일반적인 코드 작성은 항상 똑같은 실행 흐름을 갖게 된다.

● 특정 조건이나 입력값이나 등에 따라 실행의 변화를 주어서 사용자가 원하는 형태의 결과를 갖게 되도록 프로그램을 실행하는 문법, 문장을 제어문이라고 한다.

 

제어문의 종류

 

① 조건문 (IF)

→ 조건을 설정해서 조건을 만족하면 실행되는 코드와 조건을 만족하지 못한 경우 실행되는 코드를 따로 작성하여 경우에 따라 실행되는 코드를 다르게 설정

IF문 ↓

IF [조건] THEN [조건 만족시 실행할 내용];

ELSEIF [조건2] THEN [조건2 만족시 실행할 내용];

ELSE [상위 조건들 모두 불만족시 실행할 내용];

END IF;

 

② 선택문 (CASE)

● 사용자가 입력한 값이나 특정 값이 어떤 데이터냐에 따라 실행되는 SQL문을 다르게 해주는 문법, 문장

CASE문 ↓

CASE [변수]

WHEN [값1] THEN [실행할 내용];

WHEN [값2] THEN [실행할 내용];

ELSE [변수의 값과 일치하는 값이 없을 때 실행할 내용];

END CASE;

 

③ 반복문 (WHILE)

● 조건을 만족하는 경우 실행할 SQL문을 작성하여 조건 만족 시 계속 SQL문을 실행하도록 반복해서 동작하는 제어문

WHILE문 ↓

WHILE [조건] DO

	[조건이 참인 동안 반복 실행할 내용];
    
END WHILE;

● 반복문의 주의점

조건이 불만족할 때까지 계속 반복 실행한다.

사용자가 원하는 횟수만큼 반복 실행 후에는 조건이 불만족되도록 설정해야 된다.

횟수를 임의로 지정하는 방법이 없기 때문에 원하는 횟수만큼 반복 실행되면 조건이 불만족 되도록 코드를 설정해야 된다.

SET num1 = num1 -1;

위 설정을 하지 않으면 무한 반복되기 때문에 num1이 0과 같은 값이 되면 반복문 실행을 종료하게 하는 설정이다.

 

사용자가 입력한 값에서 1씩 줄어드는 값을 출력


저장 함수 (Stored Function)

● 저장 프로시저와 비슷하게 여러 SQL문을 실행할 수 있도록 만든 기능

● 저장 프로시저와의 차이점이라면 반환값이 존재한다는 것

● 저장 함수는 특정 기능을 구현하여 원하는 데이터를 뽑아내기 위해 사용한다.

 

함수

● 특정 동작을 수행하는 코드의 집합체, 블록

 

저장 함수 확인

● SHOW FUNCTION STATUS;

 

특정 저장 함수 확인

● SHOW CREATE FUNCTION [함수명];

 

저장 함수 생성

저장 함수 생성 ↓

CREATE FUNCTION [함수명] (입력값) RETURNS [반환값의 데이터타입]

BEGIN

[실행할 내용];

RETURN [반환값];

END [구문문자]

 

EX) 더하기 함수 ↓

DELIMITER //
CREATE FUNCTION test3 (num1 int,num2 int) RETURNS int
BEGIN
num1 = num1 + num2;
RETURN num1;
END //
DELIMITER ;

※ 저장함수는 CALL을 사용하면 안된다.

※ 저장함수는 SQL문에 저장함수를 같이 사용해야 된다.

저장 함수 삭제

● DROP FUNCTION [함수명];

 

※저장 함수와 프로시저는 수정이 불가능하다. 삭제하고 다시 생성하는 수밖에 없다.

DBMS 종류마다 다를 수도...?

 

'DB' 카테고리의 다른 글

트리거 (TRIGGER)  (0) 2024.11.26
실습8  (0) 2024.11.25
실습7  (0) 2024.11.22
데이터베이스 트랜잭션  (0) 2024.11.22
VIEW  (0) 2024.11.22