💾 Data/SQL

[MySQL] SQL 변수 선언 및 사용

heywantodo 2024. 8. 6. 10:24
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;

 

728x90
반응형