mysql stored procedure
TRANSCRIPT
![Page 1: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/1.jpg)
데이터베이스개론
Stored Procedure
NHN NEXT 정호영
나눔고딕 및 나눔고딕코딩 글꼴을 설치해 주세요.
![Page 2: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/2.jpg)
GOAL
스토어드프로시저를사용할수 있다.
스토어드프로시저문법 이해
스토어드프로시저실습
![Page 3: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/3.jpg)
SQL의 기본명령은 선언적명령입니다.
데이터베이스에서절차적 명령을수행하기위해서는
스토어드프로그램을사용해야합니다.
![Page 4: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/4.jpg)
스토어드프로그램의종류
스토어드함수
스토어드프로시져
트리거
이벤트핸들러
![Page 5: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/5.jpg)
스토어드프로그램의장점
응용 프로그램의성능향상!
네트워크트래픽감소!
보안성향상!
개발 업무의구분
![Page 6: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/6.jpg)
스토어드프로그램의단점
유지 보수가매우 매우어렵다!
GIT에서관리가쉽지 않다.
문제가생겨을 때 rollback은?
명령 자체의성능 감소?
![Page 7: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/7.jpg)
스토어드프로시져를사용하는곳
게임분야 : 100% 사용
웹분야 : case by case 인데최근 많이 사용함
![Page 8: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/8.jpg)
Stored Function vs Stored Procedure
함수는쿼리 내에 사용할수 있지만프로시져는불가능
함수는대신에 제약사항이많음
우리는프로시저만다룸
![Page 9: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/9.jpg)
Hello World
![Page 10: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/10.jpg)
기본변수사용하기
기본 변수선언
기본 변수는프로시져내에서만유효합니다.
DELCARE 변수명 타입 [DEFALUT 기본값]
![Page 11: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/11.jpg)
세션변수선언및사용
세션 변수는말 그대로세션 내에서계속 유효합니다.
SET @변수명 = 값;
![Page 12: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/12.jpg)
기본변수에값넣기
SET 사용
![Page 13: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/13.jpg)
SELECT INTO사용
쿼리의결과를 변수에넣을 수 있음
쿼리의결과값이스칼라값일경우만가능
![Page 14: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/14.jpg)
결과값을테이블에넣기
![Page 15: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/15.jpg)
![Page 16: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/16.jpg)
매개변수사용하기
IN parameter : 입력에사용
![Page 17: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/17.jpg)
![Page 18: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/18.jpg)
OUT매개변수사용하기
![Page 19: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/19.jpg)
IF 사용하기
IF도 사용이 가능합니다.
END IF; 로끝나야 한다는점을 주의해야합니다.
![Page 20: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/20.jpg)
![Page 21: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/21.jpg)
![Page 22: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/22.jpg)
WHILE 사용하기
WHILE 도 됩니다.
역시 END WHILE; 을 조심하세요.
![Page 23: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/23.jpg)
기타
case (switch case 와 같은 용도)
REPEAT ~ UNTIL (do while과같은용도)
![Page 24: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/24.jpg)
실습1
이렇게만들어 보세요^^
![Page 25: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/25.jpg)
실습2
1) proc_db.sql 파일을 실행
2) NUM_TRADE 컬럼을추가
3) NUM_TRADE 값 업데이트
![Page 26: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/26.jpg)
테이블의특정컬럼을이용해서값업데이트하기
UPDATE USER INNER JOIN(SELECT SELLER, COUNT(*) AS USER_TRADE
FROM TRADE
GROUP BY SELLER) T ON USER.ID = T.SELLER
SET USER.NUM_TRADE = USER_TRADE;
![Page 27: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/27.jpg)
물품 등록 PROCEDURE 만들기
등록과동시에 USER와 MARKET의 NUM_TRADE 값 증가
![Page 28: mysql stored procedure](https://reader031.vdocuments.site/reader031/viewer/2022012403/55a355d61a28ab10248b46d9/html5/thumbnails/28.jpg)
THANK YOU!!!