MySQL에서 사용자 변수는 세션 동안 값을 저장하고 조작하는 데 사용된다.
변수는 @
기호로 시작하며, 세션 간 공유되지 않고 각 세션 내에서만 유지 !
사용자 변수는 SET 문을 통해 초기화할 수 있다.
초기화 시 데이터 타입을 명시할 필요는 없다.
# 기본 문법
SET @var_name(변수 이름) := value(값)
# 예시
SET @counter := 10
변수는 SELECT, UPDATE, DELETE 등의 SQL 문에서 사용할 수 있다.
# 기본 문법
SELECT @var_name
# 예시
SELECT @counter
변수의 값은 SQL 문 내에서 변경될 수 있다.
(파이썬에서 변수 지정에 ==
기호를 사용하듯이, :=
를 통해 변수를 지정해준다.)
주로 계산이나 조건문 내에서 유용하게 사용 !
SET @counter := @counter + 1
SET @row_number := 20
SELECT REPEAT('*', @row_number := @row_number - 1 ) str
FROM tables
WHERE @row_number > 0
LIMIT 20
SET @sum := 0
SELECT id
, value
, @sum := @sum + value cumulative_sum
FROM tables
SET @a := 10
SET @b := 20
SELECT @a + @b
# 결과 : 30
SET @count := 0
SELECT id
, name
, @count := @count + 1 row_number
FROM employees
세션 단위 유지
:
사용자 변수는 세션 단위로 유지되며, 세션이 종료되면 변수도 사라진다.
초기화 필수
:
변수를 사용하기 전에 반드시 초기화해야 한다.
초기화되지 않은 변수를 사용하면 NULL이 반환될 수 있음.
동시성 문제 없음
:
변수는 각 세션 내에서 독립적으로 관리되므로,
여러 세션에서 동시에 작업할 때 변수 충돌 문제는 발생하지 않는다.
다양한 타입 지원
:
사용자 변수는 숫자, 문자열, 날짜 등 다양한 데이터 타입을 저장할 수 있다.
MySQL은 변수의 타입을 자동으로 인식함.