[혼공S] 6주차 Chap 07~08. [혼공학습단 13기]

YOUNG·2025년 2월 23일
0
[혼공학습단 13기] 활동의 일환으로 한빛미디어의 < 혼자 공부하는 SQL >을 읽고 요약 정리한 글입니다.

Chap 07. 스토어드 프로시저

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

스토어드 프로시저 기본

스토어드 프로시저 : MySQL에서 제공하는 프로그래밍 기능. 쿼리 문의 집합. 어떠한 동작을 일괄 처리.

DELIMITER $$
CREATE PROCEDURE 스토어드_프로시저_이름()
BEGIN
	이 부분에 SQL 프로그래밍 코딩
END $$
DELIMITER ;
CALL 스토어드_프로시저_이름();

CREATE PROCEDURE~로 스토어드 프로시저를 생성하며, CALL~로 실행(호출)한다.

스토어드 프로시저를 삭제할 때는 DROP PROCUDRUE~를 사용한다.

스토어드 프로시저 실습

매개변수의 사용

스토어드 프로시저 실행 시 입력 매개변수를 지정할 수 있으며, 처리된 결과를 출력 매개변수를 통해 얻을 수도 있다.

  • 입력 매개변수 지정 방식
    IN 입력_매개변수_이름 데이터_형식
  • 입력 매개변수가 있는 스토어드 프로시저 실행 방법
    CALL 프로시저_이름(전달_값);
  • 출력 매개변수 지정 방식
    OUT 출력_매개변수_이름 데이터_형식
  • 출력 매개변수가 있는 스토어드 프로시저 실행 방법
    CALL 프로시저_이름(@변수명);
    SELECT @변수명;

※ 스토어드 프로시저 활용법

  • IF ~ ELSE 조건문 사용
  • WHILE 반복문 사용
  • 동적 SQL 사용

2. 스토어드 함수와 커서

스토어드 함수

스토어드 함수: MySQL에서 제공하는 내장 함수 외에 직접 함수를 만드는 기능 제공. RETURNS 예약어를 통해 하나의 값을 반환해야 한다.

스토어드 함수의 기본 형식은 다음과 같다.

DELIMITER $$
CREATE FUNCTION 스토어드_함수_이름()
	RETURNS 반환형식
BEGIN

	이 부분에 SQL 프로그래밍 코딩
    
    RETURN 반환값;
    
END $$
DELIMITER ;
SELECT 스토어드_함수_이름();
  • RETURNS 문으로 반환할 값의 데이터 형식 지정. 본문 안 RETURN 문으로 하나의 값 반환
  • 스토어드 함수의 매개변수는 모두 입력 매개변수. IN은 붙이지 않는다.
  • SELECT 문 안에서 호출.
  • 함수 안에서는 SELECT 사용 불가.
  • 스토어드 함수는 계산 결과를 꼭 반환.

커서로 한 행씩 처리하기

커서는 모든 행을 한 행씩 처리할 때 사용한다.

커서의 작동 순서

1️⃣커서 선언하기
2️⃣반복 조건 선언하기
3️⃣커서 열기
4️⃣데이터 가져오기/처리하기 (반복)
5️⃣커서 닫기


3. 자동 실행되는 트리거

트리거는 테이블에 DML 문(INSERT, UPDATE, DELETE 등)의 이벤트가 발생하면 실행되는 코드이다.

AFTER DELETE : DELETE 문이 발생된 후에 트리거를 작동하라는 의미(다른 DML에도 같은 방식으로 적용)

✅트리거는 테이블에 입력/수정/삭제되는 정보를 백업하는 용도로 활용할 수 있다.

[기본 숙제]

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

OLD 테이블 : UPDATE나 DELETE가 수행될 때, 이전 데이터가 잠깐 저장되는 임시 테이블
새로운 데이터는 NEW 테이블에 잠깐 저장된다.


Chap 08. SQL과 파이썬 연결

1. 파이썬 개발 환경 준비

파이썬 홈페이지에서 파이썬 설치 & MySQL을 활용하기 위한 외부 라이브러리 pymysql 설치

2. 파이썬과 MySQL의 연동

데이터 입력

1️⃣MySQL 연결하기 연결자 = pymysql.connect(연결 옵션)
2️⃣커서 생성하기 커서이름 = 연결자.cursor()
3️⃣테이블 만들기 커서이름.execute("CREATE TABLE 문장")
4️⃣데이터 입력하기 (반복) 커서이름.execute("INSERT 문장")
5️⃣입력한 데이터 저장하기 연결자.commit()
6️⃣MySQL 종료하기 연결자.close()

데이터 조회

1️⃣MySQL 연결하기 연결자 = pymysql.connect(연결 옵션)
2️⃣커서 생성하기 커서이름 = 연결자.cursor()
3️⃣데이터 조회하기 커서이름.execute("SELECT 문장")
4️⃣조회한 데이터 출력하기 (반복) 커서이름.fetchone()
5️⃣MySQL 종료하기 연결자.close()

3. GUI 응용 프로그램

GUI : 윈도에 그래픽 환경으로 제공되는 화면. 사용자가 편리하게 데이터베이스에 접근하도록 도와주는 환경.
tkinter : 파이썬에서 GUI를 만들기 위해 제공되는 라이브러리

  • 라벨 : 윈도에 문자 표현
  • 버튼 : 클릭하는 기능 제공
  • 프레임 : 화면을 나누는 기능
  • 엔트리 : 입력 상자 제공
  • 리스트 박스 : 여러건의 목룍 표현

[추가 숙제]

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


profile
개발 연습생

0개의 댓글

관련 채용 정보