Domain
home
Ad Tech
home

Chapter 07. 스토어드 프로시저 & Chapter 08. SQL과 파이썬 연결

#혼공학습단 #혼공 #혼자공부하는SQL #혼공S
본 글은 2023년 7월 3일 ~ 2023년 8월 20일까지 진행하는 혼공학습단에 참여하며 정리한 글입니다.
스토어드 프로시저란 SQL 쿼리를 반복하지 않고 로직을 짤 수 있는 것을 말한다. 이에 대해 알아보자.

07-1 스토어드 프로시저 사용방법

스토어드 프로시저는 SQL에 프로그래밍 기능을 추가해서 일반 프로그래밍 언어와 비슷한 효과를 낼 수 있음

스토어드 프로시저 기본

스토어드 프로시저의 개념과 형식
DELIMITER $$ CREATE PROCEDURE 스토어드_프로시저_이름 ( IN 또는 OUT 매개변수 ) BEGIN SQL 프로그래밍 코드 작성 END $$ DELIMITER ;
SQL
복사
스토어드 프로시저의 실행
CALL 스토어드_프로시저_이름();
SQL
복사
스토어드 프로시저의 삭제
DROP PROCEDURE user_proc;
SQL
복사
매개변수
입력 매개변수 : 스토어드 프로시저에 값을 전달한다. 형식은 IN 앞에 붙임
출력 매개변수 : 스토어드 프로시저에서 계산된 결과를 돌려받음. 형식은 OUT을 앞에 붙임
동적 SQL : SQL을 생성한 후 실행 → PREPARE 문 / EXECUTE 문을 사용

07-2 스토어드 함수와 커서

스토어드 함수 : MySQL에서 제공하는 내장 함수 외에 직접 함수를 만드는 기능 제공
커서 : 테이블에서 한 행씩 처리하기 위한 방식
커서는 첫 번째 행을 처리한 후 마지막 행까지 한 행씩 접근해서 값을 처리한다.
커서의 프로세스 방식
1.
커서 선언하기
2.
반복 조건 선언하기
3.
커서 열기
4.
데이터 가져오기 → 데이터 처리하기 [이 부분을 반복]
5.
커서 닫기

커서의 단계별 실습

1.
사용할 변수 준비
DECLARE memNumber INT; DECLARE cnt INT DEFAULT 0; DECLARE totNumber INT DEFAULT 0; -- 행의 끝을 파악하기 위한 변수 endOfRow -- 처음에는 행의 끝이 아니기 떄문에 False로 초기화 DECLARE endOfRow BOOLEAN DEFAULT FALSE;
SQL
복사
2.
커서 선언하기
DECLARE memberCursor CURSOR FOR SELECT mem_number FROM member;
SQL
복사
3.
반복 조건 선언하기
DECLARE CONTINUE HANDLER FOR NOT FOUND SET endOfRow = TRUE;
SQL
복사
4.
커서 열기
OPEN memberCursor;
SQL
복사
5.
행 반복하기
-- 커서의 끝까지 한 행씩 접근해서 반복할 차례. cursor_loop: LOOP 이 부분을 반복됨 END LOOP cursor_loop
SQL
복사
루프 반복 빠져나가기
IF endOfRow THEN LEAVE cursor_loop; END IF;
SQL
복사
6.
커서 닫기
CLOSE memberCursor;
SQL
복사

08-2 파이썬과 MySQL의 연동

파이썬과 MySQL을 연결하는데에는 pymysql 라이브러리가 필요하다.
pymysql을 이용한 기본 연결 format
import pymysql conn = pymysql.connect(host=호스트_주소, user=유저, password=비밀번호, db=DB이름, charset='utf8') cur = conn.cursor() cur.execute("쿼리") # 데이터를 삽입한 경우 # 데이터를 임시로 저장한 상태이므로 이를 확실하게 저장하는 것을 커밋이라고 한다. conn.commit() conn.close()
SQL
복사

[혼공학습단 10기 미션]

기본미션

p. 363 market_db의 고객테이블(member)에 입력된 회원의 정보가 변경될 떄 변경한 사용자, 시간, 변경 전의 데이터 등을 기록하는 트리거 작성하고 인증하기

선택미션

p.402 GUI 응용프로그램 만들고 인증하기