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

MySQL 스크립트에 변수 전달하기 – 세션 변수 활용 방법

MySQL에서는 세션 변수(Session Variable)를 활용하면 스크립트에 값을 전달할 수 있습니다. 먼저 SET 명령어로 세션 변수를 선언하고 값을 할당한 뒤, 이후 실행되는 쿼리나 스크립트에서 해당 변수를 참조하여 사용하는 방식입니다.

세션 변수 사용 문법

변수를 MySQL 스크립트에 전달하는 과정은 크게 두 단계로 나눌 수 있습니다.

1단계: SET 명령어로 세션 변수 선언

SET @anyVariableName = 'yourValue';

@ 기호가 붙은 이름으로 세션 변수를 만들고 원하는 값을 할당합니다. 이 변수는 현재 세션이 유지되는 동안 계속 사용할 수 있습니다.

2단계: 쿼리에서 변수 참조

UPDATE yourTableName 
SET yourColumnName1 = yourColumnName1 + integerValue 
WHERE yourColumnName2 = @anyVariableName;

WHERE 절이나 값 계산 등 다양한 위치에서 일반 컬럼처럼 변수를 자유롭게 사용할 수 있습니다.

예제 테이블 생성

문법을 실제로 이해하기 위해 예제 테이블을 만들어 보겠습니다.

mysql> create table Employee_Information
    -> (
    -> EmployeeId int NOT NULL AUTO_INCREMENT,
    -> EmployeeName varchar(20) NOT NULL,
    -> EmployeeSalary int,
    -> EmployeeStatus varchar(20),
    -> PRIMARY KEY(EmployeeId)
    -> );
Query OK, 0 rows affected (0.53 sec)

샘플 데이터 입력

INSERT 명령어로 직원 정보를 몇 건 입력합니다.

mysql> insert into Employee_Information(EmployeeName,EmployeeSalary,EmployeeStatus) values('Sam',17650,'FullTime');
Query OK, 1 row affected (0.13 sec)

mysql> insert into Employee_Information(EmployeeName,EmployeeSalary,EmployeeStatus) values('Carol',12000,'Trainee');
Query OK, 1 row affected (0.18 sec)

mysql> insert into Employee_Information(EmployeeName,EmployeeSalary,EmployeeStatus) values('Bob',17650,'FullTime');
Query OK, 1 row affected (0.20 sec)

mysql> insert into Employee_Information(EmployeeName,EmployeeSalary,EmployeeStatus) values('Mike',12000,'Trainee');
Query OK, 1 row affected (0.14 sec)

mysql> insert into Employee_Information(EmployeeName,EmployeeSalary,EmployeeStatus) values('John',17650,'FullTime');
Query OK, 1 row affected (0.16 sec)

입력된 데이터 확인

mysql> select *from Employee_Information;

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

+------------+--------------+----------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary | EmployeeStatus |
+------------+--------------+----------------+----------------+
|          1 | Sam          |          17650 | FullTime       |
|          2 | Carol        |          12000 | Trainee        |
|          3 | Bob          |          17650 | FullTime       |
|          4 | Mike         |          12000 | Trainee        |
|          5 | John         |          17650 | FullTime       |
+------------+--------------+----------------+----------------+
5 rows in set (0.00 sec)

세션 변수를 활용한 UPDATE 쿼리

이제 세션 변수에 직원 상태값을 담아두고, 해당 조건에 맞는 직원들의 급여를 인상해 보겠습니다.

mysql> set @EmpStatus = 'FullTime';
Query OK, 0 rows affected (0.03 sec)

mysql> update Employee_Information set EmployeeSalary = EmployeeSalary+6500 where EmployeeStatus = @EmpStatus;
Query OK, 3 rows affected (0.18 sec)
Rows matched: 3  Changed: 3  Warnings: 0

@EmpStatus 변수에는 'FullTime'이라는 값이 저장되어 있으므로, WHERE 절의 조건과 일치하는 정규직(FullTime) 직원 3명의 급여가 각각 6,500씩 증가했습니다.

업데이트 결과 확인

mysql> select *from Employee_Information;

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

+------------+--------------+----------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary | EmployeeStatus |
+------------+--------------+----------------+----------------+
|          1 | Sam          |          24150 | FullTime       |
|          2 | Carol        |          12000 | Trainee        |
|          3 | Bob          |          24150 | FullTime       |
|          4 | Mike         |          12000 | Trainee        |
|          5 | John         |          24150 | FullTime       |
+------------+--------------+----------------+----------------+
5 rows in set (0.00 sec)

결과를 보면 FullTime 상태인 Sam, Bob, John의 급여만 17,650에서 24,150으로 인상되었고, Trainee 상태인 Carol과 Mike의 급여는 그대로 유지된 것을 확인할 수 있습니다.

정리

MySQL에서 스크립트에 변수를 전달하려면 다음 순서를 따르면 됩니다.

  1. SET 명령어로 @가 붙은 세션 변수를 선언하고 값을 할당한다.
  2. 쿼리 내에서 해당 변수를 참조하여 조건문이나 연산에 활용한다.

세션 변수를 사용하면 반복적인 쿼리 작성 없이 동적으로 값을 변경하며 재사용할 수 있어, 배치 작업이나 조건부 업데이트 처리 시 특히 유용합니다.