728x90
[MySQL] Prepared Statement
MySQL 4.1 버전부터 Prepared Statment를 지원한다. 이는 쉽게 말해 SQL 쿼리를 미리 준비해 놓고,
나중에 실행할 수 있도록 하는 미리 만들어 놓은 쿼리라고 보면 된다.
이는 클라이언트와 서버 간의 빠른 데이터 전송을 가능하게 하는 기술을 기반으로 한다.
해당 구문에 대해 조금 더 자세히 알아보자.
사용 용도
준비된 문(Prepared Statement)은 다음과 같은 상황에서 유용하다.
- 프로그램에서 준비된 문이 어떻게 작동하는지 시험해보고 싶을 때
- 특정 프로그램에서 문제를 해결하고 싶을 때
- 버그를 찾기 위해 테스트 케이스를 만들고 싶을 때
- 프로그래밍 API에 접근할 수 없을 때
SQL Syntax
Prepared Statement에 대한 SQL 문법은 다음 세개의 SQL문들에 기반을 두고 있다.
1. PREPARE
PREPARE stmt_name FROM preparable_stmt
SQL 문 또는 변수를 준비하고, 이름으로 할당한다.
2. EXECUTE
EXECUTE stmt_name [USING @var_name [, @var_name] ...];
준비된 문을 실행하며, 필요한 경우 변수 값을 전달한다.
3. DEALLOCATE
{DEALLOCATE | DROP} PREPARE stmt_name;
준비된 문을 해제한다.
예제
아래 방식은 SQL 쿼리를 문자열 형태로 직접 작성하여 준비하는 방식이다.
mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1;
아래 방식은 SQL 쿼리를 변수에 저장한 후, 그 변수를 사용하여 준비하는 방식이다.
mysql> SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> PREPARE stmt2 FROM @s;
mysql> SET @a = 6;
mysql> SET @b = 8;
mysql> EXECUTE stmt2 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 10 |
+------------+
mysql> DEALLOCATE PREPARE stmt2;
반응형
'💾 Data > SQL' 카테고리의 다른 글
[MySQL] 문자열 다루기 (0) | 2025.01.17 |
---|---|
[MySQL] 프로시저에서의 매개 변수(IN, OUT, IN OUT) (1) | 2024.12.11 |
[MySQL] 프로시저 변수(DECLARE, SET)에 대한 이해 (0) | 2024.12.10 |
[MySQL] 실행중인 쿼리 확인하기 (0) | 2024.12.02 |
[MySQL] JSON_TABLE(), JSON_ARRAY() (2) | 2024.09.23 |