Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 시스템 변수 vs 사용자 정의 변수: 차이점 완벽 정리

시스템 변수(System Variables)

시스템 변수는 MySQL 서버의 동작 방식을 제어하는 강타입(strongly typed) 변수입니다. 전역(Global) 변수라고도 불리며, 데이터 타입이 미리 정해져 있어 임의로 타입을 바꿀 수 없습니다.

시스템 변수는 서버 시작 시 전역 범위에서 초기화되며, 그 값은 MySQL 서버가 재시작될 때까지 유지됩니다. 즉, 서버를 재시작하면 설정했던 값은 사라지고 기본값으로 되돌아갑니다(설정 파일 my.cnf/my.ini에 명시하지 않은 경우). 시스템 변수는 @@ 기호가 접두사로 붙는 것이 특징입니다.

-- 현재 서버 버전 확인
SELECT @@version;

-- 전역 시스템 변수 값 변경
SET GLOBAL max_connections = 500;

사용자 정의 변수(User-defined Variables)

사용자 정의 변수는 세션(Session)별 변수라고도 불립니다. 시스템 변수와 달리 느슨한 타입(loosely typed) 변수로, 선언 시점에 할당하는 값에 따라 타입이 자동으로 결정됩니다.

사용자 정의 변수는 세션 내에서 초기화되며, 그 값은 해당 세션이 종료될 때까지 유지됩니다. 다른 세션에서는 이 값을 읽거나 수정할 수 없습니다. 사용자 정의 변수는 @ 기호 하나가 접두사로 붙습니다.

-- 사용자 정의 변수 선언 및 값 할당
SET @myVariable = 100;
SET @userName = '홍길동';

-- 변수 값 조회
SELECT @myVariable, @userName;

핵심 차이점 요약

구분시스템 변수사용자 정의 변수
접두사@@@
타입강타입 (미리 정의됨)느슨한 타입 (할당 값에 따라 결정)
유지 범위서버 전체 (전역)개별 세션
초기화 시점서버 시작 시세션 내에서 SET 시
소멸 시점서버 재시작 시세션 종료 시

정리하면, @@로 시작하는 시스템 변수는 서버 전체의 설정과 동작을 관리하는 반면, @로 시작하는 사용자 정의 변수는 쿼리 작성 중 임시 값을 저장하고 재사용하기 위한 목적으로 활용됩니다.