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

MySQL에서 사용자 정의 변수에 값을 저장하는 방법

MySQL에서는 하나의 문(statement)에서 사용자 정의 변수(user-defined variable)에 값을 저장한 뒤, 이후 다른 문에서 해당 변수를 참조하여 재사용할 수 있습니다. 이러한 방식은 복잡한 쿼리를 여러 단계로 나누어 처리하거나, 계산 결과를 임시로 보관해야 할 때 매우 유용합니다.

사용자 정의 변수에 값을 저장하는 방법은 크게 두 가지가 있습니다.

SET 문을 사용하는 방법

가장 일반적인 방법은 SET 문을 사용하는 것입니다. 기본 문법은 다음과 같습니다.

문법

SET @var_name = expr[, @var_name = expr]…;

여기서 @var_name은 변수 이름으로, 현재 문자셋(character set)의 영숫자(alphanumeric) 문자들로 구성됩니다. SET 문에서는 = 또는 := 두 가지 할당 연산자를 모두 사용할 수 있다는 점이 특징입니다.

다음 예시 쿼리들은 SET 문을 이용해 사용자 변수에 값을 저장하는 방법을 보여줍니다.

mysql> SET @value = 500;
Query OK, 0 rows affected (0.00 sec)

mysql> SET @value := 500;
Query OK, 0 rows affected (0.00 sec)

mysql> SET @value = 500, @value1 = 550;
Query OK, 0 rows affected (0.00 sec)

마지막 예시에서 볼 수 있듯이, SET 문 하나로 여러 개의 변수에 동시에 값을 할당하는 것도 가능합니다.

SET 문 없이 저장하는 방법

SET 문을 사용하지 않고도 SELECT 문 같은 일반 SQL 문 안에서 직접 변수에 값을 할당할 수 있습니다.

mysql> SELECT @value, @value1, @value2 := @value + @value1;

+--------+---------+---------------------------+
| @value | @value1 | @value2 := @value+@value1 |
+--------+---------+---------------------------+
| 500    | 550     | 1050                      |
+--------+---------+---------------------------+
1 row in set (0.00 sec)

위 예제에서는 이미 저장되어 있던 @value(500)와 @value1(550)을 더한 결과인 1050을 새로운 변수 @value2에 할당했습니다.

단, 이 경우에는 반드시 := 할당 연산자를 사용해야 한다는 점에 유의해야 합니다. SET 문과 달리 일반 SQL 문 내부에서는 =가 비교 연산자로 해석되기 때문에 값이 할당되지 않습니다.