프로시저는 데이터베이스 안에 저장된 일련의 SQL 명령문을 묶어놓은 것입니다.
주로 자주 사용하는 쿼리나 로직을 재사용할 수 있도록 만들며, 저장 프로시저(Stored Procedure)라고도 부릅니다.
클라이언트나 개발자가 데이터베이스 테이블 구조를 몰라도 DML 작업 가능
프로시저에만 권한을 주고, 직접 쿼리 실행은 막을 수 있음 → 보안성 향상
일반적인 SQL 쿼리는 디스크 접근이나 네트워크를 통해 처리
CPU → MAIN MEMORY → DISK / NETWORK프로시저나 뷰는 메인 메모리에 캐시되어 실행되므로 속도가 빠름
DELIMITER //
CREATE PROCEDURE 프로시저이름(IN 입력값 INT)
BEGIN
-- 여러 SQL 문
SELECT * FROM users WHERE age > 입력값;
END //
DELIMITER ;
| 종류 | 설명 |
|---|---|
IN | 외부에서 값을 받아오는 용도 (입력 전용) |
OUT | 프로시저가 외부로 값을 돌려줄 때 사용 |
INOUT | 입출력 모두 가능 |

# usertbl을 이용해서 프로시저 생성
DELIMITER //
CREATE PROCEDURE myproc(IN _userid CHAR(15), _name varchar(20), _birthyear int(11), _addr char(100), _mobile char(11), _mdate date)
BEGIN
INSERT INTO usertbl values(_userid,_name,_birthyear,_addr,_mobile,_mdate)
END //
DELIMITER ;
call myproc('BoA', '권보아',1986,'남양주','01012345678','1986-11-05');
DROP PROCEDURE IF EXISTS 프로시저이름;
cursor객체.callproc(프로시저이름, args=(매개변수 나열))
import pymysql
# 접속
con = pymysql.connect(host = '127.0.0.1', port=3306, user='root',passwd='0000', db = 'autoever', charset='utf8mb4')
#sql 실행 객체 생성
cursor = con.cursor()
# 프로시저 호출
cursor.callproc('myproc', args=('llala','랄라',2004,'경기','01032342323','2003-10-22'))
con.commit()

BLOB = Binary Large Object
→ 이미지, 영상, 오디오, 파일 등 "큰 크기의 이진 데이터(Binary Data)"를 저장하기 위한 데이터 타입입니다.
| 방식 | 설명 |
|---|---|
| 1️⃣ 파일 경로 저장 | 실제 파일은 서버에 저장하고, DB에는 경로(문자열)만 저장 |
| 2️⃣ 파일 원본 저장 (BLOB) | 파일 내용을 그대로 이진 데이터로 DB에 저장 → 확장이 필요하거나 파일 보존이 중요한 경우 사용 |
create table blobtable(
userid char(15) not null primary key,
filename varchar(1000),
filecontent longblob);
select * from blobtable;
import sys, pymysql
#자신의 이미지 파일 경로를 사용하세요
# 파일의 내용을 읽을 수 있는 준비
filename = 'image/cat.jpg'
f = open(filename, 'rb')
# 파일의 내용 읽기
photo = f.read()
f.close()
# 접속
con = pymysql.connect(host = '127.0.0.1', port=3306, user='root',passwd='0000', db = 'autoever', charset='utf8mb4')
cursor = con.cursor()
cursor.execute('insert into blobtable values(%s, %s, %s)',('고양이','cat.jpg',photo))
con.commit()
cursor.close()
con.close()

import sys, pymysql
con = pymysql.connect(host = '127.0.0.1', port=3306, user='root',passwd='0000', db = 'autoever', charset='utf8mb4')
cursor = con.cursor()
cursor.execute('select * from blobtable')
data = cursor.fetchall()
for imsi in data:
#파일명을 생성
f = open(imsi[1],'wb')
# 파일을 기록
f.write(imsi[2])
f.close()
con.close()
📁 실행하면 해당 폴더에 이미지 파일이 복원되어 저장됩니다!