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

MySQL에서 변수 선언하는 방법 – 세션 변수와 지역 변수 활용 가이드

MySQL 변수 선언의 두 가지 방식

MySQL에서는 일반 쿼리 내에서 변수를 선언하고 활용할 수 있습니다. MySQL의 변수는 크게 두 가지 방식으로 선언할 수 있는데, 하나는 세션 변수(Session Variable)이고 다른 하나는 지역 변수(Local Variable)입니다.

1. 세션 변수 선언 (@변수명)

세션 변수는 @변수명 형태로 선언하며, SET 명령어를 사용해 값을 할당합니다. 세션 변수는 현재 접속 중인 세션 전체에서 유효하기 때문에 여러 쿼리에서 재사용할 수 있다는 장점이 있습니다.

세션 변수를 생성하는 기본 문법은 다음과 같습니다.

SET @변수명 := 값;

2. 지역 변수 선언 (DECLARE)

지역 변수는 DECLARE 명령어를 사용하여 선언합니다. 주로 저장 프로시저(Stored Procedure)나 함수 내부에서 사용되며, 해당 블록 안에서만 유효합니다.

DECLARE 변수명 데이터타입;

또한 변수를 선언하는 시점에 기본값(default)을 함께 지정할 수도 있습니다.

DECLARE 변수명 데이터타입 DEFAULT '기본값';

세션 변수 실습 예제

이제 세션 변수가 실제로 어떻게 동작하는지 예제를 통해 살펴보겠습니다. 먼저 실습용 테이블을 생성합니다.

테이블 생성

mysql> create table SessionVariableDemo
    -> (
    -> EmployeeId varchar(10),
    -> EmployeeName varchar(30),
    -> EmployeeAge int
    -> );
Query OK, 0 rows affected (0.70 sec)

샘플 데이터 입력

INSERT 명령어를 사용해 직원 정보를 테이블에 입력합니다.

mysql> insert into SessionVariableDemo values('EMP-101','Carol',30);
Query OK, 1 row affected (0.20 sec)

mysql> insert into SessionVariableDemo values('EMP-102','John',26);
Query OK, 1 row affected (0.20 sec)

mysql> insert into SessionVariableDemo values('EMP-103','Bob',25);
Query OK, 1 row affected (0.19 sec)

mysql> insert into SessionVariableDemo values('EMP-104','Sam',32);
Query OK, 1 row affected (0.14 sec)

mysql> insert into SessionVariableDemo values('EMP-105','Mike',35);
Query OK, 1 row affected (0.11 sec)

mysql> insert into SessionVariableDemo values('EMP-106','David',33);
Query OK, 1 row affected (0.15 sec)

전체 데이터 조회

SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.

mysql> select *from SessionVariableDemo;

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

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| EMP-101    | Carol        |          30 |
| EMP-102    | John         |          26 |
| EMP-103    | Bob          |          25 |
| EMP-104    | Sam          |          32 |
| EMP-105    | Mike         |          35 |
| EMP-106    | David        |          33 |
+------------+--------------+-------------+
6 rows in set (0.00 sec)

세션 변수 생성 및 쿼리 적용

이제 SET 명령어로 나이가 30보다 큰 조건을 담은 세션 변수를 생성합니다.

mysql> set @AgeGreaterThan30:=30;
Query OK, 0 rows affected (0.00 sec)

생성한 세션 변수를 WHERE 절에 활용하여 나이가 30살을 초과하는 직원 레코드만 조회하는 쿼리는 다음과 같습니다.

mysql> select *from SessionVariableDemo where EmployeeAge > @AgeGreaterThan30;

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

+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| EMP-104    | Sam          |          32 |
| EMP-105    | Mike         |          35 |
| EMP-106    | David        |          33 |
+------------+--------------+-------------+
3 rows in set (0.00 sec)

정리

이처럼 MySQL에서는 @ 기호를 사용한 세션 변수DECLARE를 사용한 지역 변수 두 가지 방식으로 변수를 선언할 수 있습니다. 세션 변수는 일반 쿼리에서 바로 사용 가능하며 조건값을 동적으로 관리할 때 유용하고, 지역 변수는 저장 프로시저나 함수 내부에서 복잡한 로직을 처리할 때 활용됩니다. 상황에 맞게 두 방식을 적절히 사용하면 쿼리의 가독성과 재사용성을 크게 높일 수 있습니다.