728x90
[MySQL] SQL 변수 선언 및 사용
MySQL에서 변수를 사용하는 것은 데이터베이스 내에서 반복 작업을 자동화하거나, 복잡한 쿼리를 간결하게 만드는 데 매우 유용하다. MySQL에는 주로 세 가지 종류의 변수가 있다.
1. 사용자 정의 변수 (User-Defined Variables)
사용자 정의 변수는 세션 내에서만 존재하며, 주로 SELECT, INSERT, UPDATE 쿼리 내에서 사용된다.
변수 이름 앞에는 항상 '@' 기호를 붙인다.
선언 및 사용법
사용자 정의 변수는 별도의 선언 없이 바로 값을 할당하여 사용할 수 있다.
-- 변수 @myVar에 100을 할당
SET @myVar = 100;
-- 변수 @myVar의 값을 출력
SELECT @myVar;
아래 예제는 'employees' 테이블에서 가장 높은 급여를 가진 직원의 이름을 사용자 정의 변수에 저장하고 출력하는 방법을 보여준다.
SELECT @maxSalary := max(salary) FROM employees;
SELECT name FROM employees WHERE salary = @maxSalary;
2. 준비된 문장 변수 (Prepared Statement Variables)
준비된 문장 변수는 보안과 성능 향상을 위해 사용하는 변수다.
주로 반복적인 SQL 쿼리를 실행할 때 사용된다.
선언 및 사용법
준비된 문장 변수를 사용하려면 'PREPARE', 'EXECUTE', 'DEALLOCATE' 명령을 사용해야 한다.
PREPARE | 준비된 문장을 생성한다. SQL 쿼리를 준비된 문장으로 준비한다. 이때 '?'를 사용하여 나중에 채워질 자리 표시자를 정의한다. |
EXECUTE | 준비된 문장을 실행한다. 'USING' 절을 사용하여 자리표시자에 들어갈 값을 지정한다. |
DEALLOCATE | 준비된 문장을 해제한다. 사용이 끝난 준비된 문장을 메모리에서 해제한다. |
아래 예제는 employees 테이블에서 특정 부서의 직원을 조회하는 방법을 보여준다.
-- 준비된 문장을 생성
PREPARE stmt FROM 'SELECT * FROM employees WHERE department_id = ?';
-- 변수에 값을 설정
SET @deptId = 3;
-- 준비된 문장을 실행
EXECUTE stmt USING @deptId;
-- 준비된 문장을 해제
DEALLOCATE PREPARE stmt;
3. 시스템 변수 (System Variables)
시스템 변수는 MySQL 서버의 설정과 동작을 제어하는 데 사용된다.
시스템 변수는 글로벌 변수와 세션 변수로 나뉜다.
선언 및 사용법
시스템 변수는 '@@' 또는 '@'를 사용하여 참조할 수 있으며, 'SET' 명령을 사용하여 값을 변경할 수 있다.
아래 예제는 MySQL 서버의 최대 연결 수를 변경하는 방법을 보여준다.
-- 글로벌 변수 조회 (현재 최대 연결 수 확인)
SHOW GLOBAL VARIABLES LIKE 'max_connections';
-- 세션 변수 조회
SHOW SESSION VARIABLES LIKE 'autocommit';
-- 글로벌 변수 변경 (최대 연결 수 변경)
SET GLOBAL max_connections = 200;
-- 세션 변수 변경
SET SESSION autocommit = 0;
반응형
'💾 Data > SQL' 카테고리의 다른 글
[MySQL] PERCENT_RANK() (0) | 2024.09.04 |
---|---|
[MySQL] INNER, LEFT, RIGHT JOIN (0) | 2024.08.12 |
[MySQL] DB 테이블 row 수 확인 (0) | 2024.04.23 |
[SQL] USING (0) | 2024.03.18 |
[MySQL] With 문 (0) | 2024.03.14 |