컴퓨터 과학/데이터 베이스

MySQL 변수 이해하기: DECLARE vs @var

Data Jun 2025. 8. 21. 18:15

MySQL을 공부하다 보면 변수 선언 방식에 두 가지가 자주 나옵니다.
바로 DECLARE var와 @var인데, 비슷해 보이지만 사용 범위와 생명주기가 다릅니다.

 

DECLARE 변수

DECLARE myVar INT;
SET myVar = 100;
  • 로컬(Local) 변수
  • BEGIN ~ END 블록 안에서만 사용 가능
  • 프로시저, 함수, 트리거 안에서만 선언 가능
  • 블록이 끝나면 자동으로 사라짐

👉 함수 안에서만 잠깐 쓰이는 지역 변수라고 이해하면 됩니다.

 

@var 변수

SET @myVar = 100;
SELECT @myVar;
  • 사용자(User) 변수
  • @ 기호를 붙여 바로 사용할 수 있음
  • 세션(Session) 단위에서 유지 → 접속이 끝날 때까지 값이 남음
  • 블록 내부·외부 어디서든 사용 가능

👉 현재 접속 동안 계속 유지되는 세션 전역 변수라고 보면 됩니다.

 

비교 정리

 

간단한 비유

  • DECLARE var = 지역(local) 변수
    (함수 안에서만 쓰고 끝나는 임시 값)
  • @var = 세션 전역(session-wide) 사용자 변수
    (내 접속이 유지되는 동안 살아있는 값)

 

정리

 

짧게 쓰고 버리는 값은 DECLARE,
세션 내에서 계속 활용할 값은 @var를 사용하면 됩니다