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

MySQL 임시 변수 할당 방법 – SET 명령어와 SELECT INTO 완벽 정리

MySQL에서는 SET 명령어를 사용하여 세션 내에서만 유효한 임시(사용자 정의) 변수에 값을 손쉽게 할당할 수 있습니다. 이 기능은 특정 조건에 맞는 값을 여러 쿼리에서 재사용하거나, 복잡한 로직을 단계별로 처리할 때 매우 유용합니다.

임시 변수 할당 기본 문법

SET 명령어와 서브쿼리를 함께 사용하는 기본 문법은 다음과 같습니다.

SET @변수이름 = (SELECT 컬럼명 FROM 테이블명 WHERE 조건);

예제용 테이블 생성하기

문법을 실제로 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다.

mysql> create table tempVariableAssignment
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name varchar(20),
    -> Age int
    -> );
Query OK, 0 rows affected (0.59 sec)

샘플 데이터 삽입

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into tempVariableAssignment(Name,Age) values('John',25);
Query OK, 1 row affected (0.14 sec)
mysql> insert into tempVariableAssignment(Name,Age) values('Carol',26);
Query OK, 1 row affected (0.17 sec)
mysql> insert into tempVariableAssignment(Name,Age) values('Sam',28);
Query OK, 1 row affected (0.13 sec)
mysql> insert into tempVariableAssignment(Name,Age) values('David',19);
Query OK, 1 row affected (0.19 sec)
mysql> insert into tempVariableAssignment(Name,Age) values('Bob',23);
Query OK, 1 row affected (0.19 sec)

전체 레코드 조회하기

SELECT 문으로 테이블의 모든 데이터를 확인해 보겠습니다.

mysql> select *from tempVariableAssignment;

실행 결과는 다음과 같습니다.

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
| 1  | John  | 25   |
| 2  | Carol | 26   |
| 3  | Sam   | 28   |
| 4  | David | 19   |
| 5  | Bob   | 23   |
+----+-------+------+
5 rows in set (0.00 sec)

SET 명령어로 변수 할당하기

이제 Id가 4인 행(David)의 나이 값을 @findAge라는 임시 변수에 할당해 보겠습니다.

mysql> set @findAge=(select Age from tempVariableAssignment where Id=4);
Query OK, 0 rows affected (0.02 sec)

변수 값 확인하기

할당된 변수 값은 다음과 같이 간단히 조회할 수 있습니다.

mysql> select @findAge;

결과:

+----------+
| @findAge |
+----------+
| 19       |
+----------+
1 row in set (0.01 sec)

SELECT INTO를 활용한 대안 방법

SET 외에도 SELECT ... INTO 구문을 사용하여 같은 결과를 얻을 수 있습니다.

mysql> select Age INTO @anotherAge
-> from tempVariableAssignment where Id=4;
Query OK, 1 row affected (0.00 sec)

@anotherAge 변수의 값을 확인해 보겠습니다.

mysql> select @anotherAge;

결과:

+-------------+
| @anotherAge |
+-------------+
| 19          |
+-------------+
1 row in set (0.00 sec)

정리

MySQL에서 임시 변수에 값을 할당하는 방법은 크게 두 가지입니다. 첫째, SET @변수 = (서브쿼리) 형태로 값을 직접 대입하는 방식이고, 둘째, SELECT 컬럼 INTO @변수 형태로 조회 결과를 바로 저장하는 방식입니다. 두 방법 모두 세션 단위로 유지되며, 연결이 종료되면 변수도 함께 사라진다는 점을 기억하시기 바랍니다.