MySQL의 사용자 변수(user variable)는 @변수명 형태로 작성되며, 정수, 실수, 문자열 또는 NULL 값을 저장할 수 있습니다. 사용자 변수에 값을 할당할 때는 SET 문을 사용하며, 이때 대입 연산자로 = 또는 := 중 하나를 선택해 사용할 수 있습니다.
SET 문으로 값 할당하기
다음 예제는 SET 문을 이용해 사용자 변수 A에는 숫자 100을, 변수 B에는 문자열 'MySQL'을 각각 할당하는 방법을 보여줍니다.
mysql> SET @A = 100; Query OK, 0 rows affected (0.00 sec) mysql> Set @B = 'MySQL'; Query OK, 0 rows affected (0.00 sec)
할당된 변수의 값은 SELECT 문으로 간단히 확인할 수 있습니다.
mysql> Select @A, @B; +------+-------+ | @A | @B | +------+-------+ | 100 | MySQL | +------+-------+ 1 row in set (0.05 sec)
여러 변수를 한 번에 할당하기
쉼표(,)로 구분하면 하나의 SET 문에서 여러 개의 변수에 동시에 값을 할당할 수도 있습니다.
mysql> SET @X = 'Ram',@Y = 'Shyam',@Z = 'Students', @S = 5000; Query OK, 0 rows affected (0.00 sec) mysql> Select @X, @Y, @Z, @S; +------+-------+----------+------+ | @X | @Y | @Z | @S | +------+-------+----------+------+ | Ram | Shyam | Students | 5000 | +------+-------+----------+------+ 1 row in set (0.00 sec)
SELECT 문으로 값 할당하기
SELECT 문을 통해서도 사용자 변수에 값을 할당할 수 있습니다. 다만 이 경우에는 반드시 := 연산자만 사용해야 하며, = 연산자는 비교 연산으로 해석되므로 사용할 수 없습니다.
mysql> SELECT @C := 'Tutorialspoint'; +------------------------+ | @C := 'Tutorialspoint' | +------------------------+ | Tutorialspoint | +------------------------+ 1 row in set (0.00 sec) mysql> SELECT @C; +----------------+ | @C | +----------------+ | Tutorialspoint | +----------------+ 1 row in set (0.00 sec)
정리하면, MySQL 사용자 변수는 세션 단위로 유지되는 임시 저장 공간으로, SET 문에서는 =와 := 모두 사용 가능하지만 SELECT 문에서는 :=만 사용해야 한다는 점을 기억하면 됩니다.