MySQL에서 로컬 변수(지역 변수)는 특정 문장 집합 또는 하나의 블록 안에서만 유효한 범위(scope)를 가집니다. 해당 문장 집합이나 블록의 실행이 끝나면 로컬 변수는 자동으로 범위를 벗어나 더 이상 사용할 수 없습니다.
로컬 변수란?
로컬 변수는 주로 저장 프로시저(stored procedure)나 함수(function) 내부에서 사용되며, 반드시 DECLARE 키워드로 선언해야 합니다.
로컬 변수를 선언하는 기본 문법은 다음과 같습니다.
DECLARE yourVariableName dataType;
예를 들어 다음과 같이 선언할 수 있습니다.
DECLARE total INT DEFAULT 0;
시스템(전역) 변수란?
전역 변수 또는 시스템 변수는 서버를 재시작하기 전까지 모든 연결에 걸쳐 유효합니다. 이러한 변수는 GLOBAL 키워드를 사용하여 설정하며, 문법은 다음과 같습니다.
SET GLOBAL max_connections=value; OR SET @@global.max_connections=value;
시스템 변수 조회 예시
서버의 포트 번호를 확인하고 싶다면 SELECT 문으로 @@port 시스템 변수를 조회하면 됩니다. 쿼리는 다음과 같습니다.
mysql> select @@port;
출력 결과
실행 결과는 아래와 같습니다.
+--------+ | @@port | +--------+ | 3306 | +--------+ 1 row in set (0.00 sec)
핵심 차이점 요약
| 구분 | 로컬 변수 | 시스템(전역) 변수 |
|---|---|---|
| 유효 범위 | 선언된 블록 또는 프로시저/함수 내부 | 모든 연결, 서버 재시작까지 유지 |
| 선언/설정 방법 | DECLARE 키워드 | SET GLOBAL 또는 @@global |
| 주요 사용처 | 저장 프로시저, 함수 등 프로그램 로직 | 서버 설정값 관리 (예: max_connections, port) |