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를 사용하면 됩니다
'컴퓨터 과학 > 데이터 베이스' 카테고리의 다른 글
| MySQL 사용자 정의 함수 (Stored Function) 예제: 나이 계산 함수 만들기 (0) | 2025.08.23 |
|---|---|
| MySQL 프로시저 제어문 – WHILE, ITERATE, LEAVE, IF문 비교 연산자 (0) | 2025.08.21 |
| MySQL에서 사용자 변수와 PREPARE/EXECUTE 활용하기 (0) | 2025.08.21 |
| SQL 명령어 분류 정리 – DML, DDL, DCL, TCL 비교 (0) | 2025.08.21 |
| 뷰(View)란 무엇일까? (1) | 2025.08.20 |