TIL 2021.06.02 [스토어드 프로시져]

Kyu·2021년 6월 2일
0

TIL

목록 보기
143/322

SQL의 기본 명려은 선언적 명령이다 → How가 아니라 What에 해당한다.
디비에서 절차적 명령을 수행하기 위해서는 스토어드 프로그램을 사용해야 한다.

스토어드 프로그램

자바 코드 짜듯이 메서드를 짜서 디비에 저장한다고 생각하면 된다.

장점

디비에 프로그램을 저장하기 때문에 응용 프로그램의 성능에 유리하다!
네트워크 트래픽이 감소한다! → 여러개 호출할 걸 한번에 호출할 수 있으니까!
정확한 인풋과 아웃풋으로 보안성 향상!
개발 업무의 구분!

단점

유지 보수가 매우 어렵다! → 코드가 디비에 있기 때문에!
깃에서 관리가 쉽지 않다 → DBA가 깃을 안쓴다!
문제가 생겼을때 rollback은? → 어렵다.
명령 자체의 성능 감소

명령 자체의 성능 감소는 마이너한 단점이지만 위 3개는 큰 단점이다.

사용하는 곳?

게임분야에서는 많이 사용한다고 하지만,
다른 분야에서는 케바케인데 사용이 줄어들고 있다고 한다.

스토어드 펑션 VS 스토어드 프로시져

개발자 입장에서 스토어드 펑션은 그냥 함수라고 보면되는데 쿼리안에서 SQL을 사용한다.

프로시져

DROP PROCEDURE IF EXISTS SP_HELLO; // SP 스토어드프로시져쓸때 관행 컨벤션 있으면 지워라
DELIMITER $$ // 딜리미터 달러달러가 없으면 진행이 안된다
CREATE PROCEDURE SP_HELLO() // 프로시져가 만들어지는곳
BEGIN
SET A = 'HELLO, WORLD';
DECLARE A CHAR(20) DEFAULT 'POPI';
SELECT A;
END $$
DELIMITER ;
CALL SP_HELLO();

기본 변수 사용하기

DECLARE 변수명 타입 [DEFAULT 기본값]
기본 변수는 프로시져 내에서만 유효

세션 변수 사용

SET @...

세션변수는 세션메모리에 저장되어있다.
코딩에서 전역변수랑 비슷하다 (static 느낌)
세션변수는 항상 @를 붙인다.
셀렉트A 프린트면서 리턴하는 구문

SELECT INTO 사용

쿼리의 결과를 변수에 넣을 수 있음
쿼리의 결과값이 스칼라 값일 경우만 가능 (스칼라 = 단일값)
프로시져 만들면 그거도 디비에 저장 → 저장될때도 있고 아닐때도있다
스칼라 → 일반 테이블이아니라 단일값!
디비에서 딜리미터 → 앞으로 딜리미터로 이걸 사용할거다

그 외

선배님들과의 말..

이 시점에 다른 언어를 해봐라. 파이썬 - 장고 이런것도 좋고..
깃 정리..공개해놓은건 돌아가도록해라 리드미를 잘 작성해라.
알고리즘 풀지않고 내가 하고싶은 프로젝트를 하는..이야기할거리가 늘어난다.
알고리즘 많이 꾸준히 열심히 프로그래머스.

profile
TIL 남기는 공간입니다

0개의 댓글