MySQL에서는 SET 명령어를 사용해 사용자 정의 변수(user-defined variable)를 손쉽게 선언할 수 있습니다. 이렇게 만든 변수는 이후 SELECT 쿼리의 WHERE 절 등에서 입력 매개변수처럼 활용할 수 있어, 반복적인 조건 조회 작업을 훨씬 효율적으로 처리할 수 있습니다.
MySQL 변수 선언 기본 구문
MySQL에서 변수를 설정하는 기본 구문은 다음과 같습니다. 변수 이름 앞에는 반드시 @ 기호를 붙여야 하며, 값 할당에는 := 연산자를 사용합니다.
set @yourVariableName:=yourValue;
select *from yourTableName where yourColumnName=@yourVariableName;
예제 테이블 생성하기
실습을 위해 먼저 간단한 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int,
FirstName varchar(20),
LastName varchar(20)
);
Query OK, 0 rows affected (0.83 sec)
다음으로 INSERT 명령어를 사용해 테이블에 샘플 데이터를 삽입합니다.
mysql> insert into DemoTable values(10,'Carol','Taylor');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(20,'John','Doe');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(30,'John','Smith');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(40,'David','Miller');
Query OK, 1 row affected (0.18 sec)
SELECT 명령어로 테이블에 저장된 전체 레코드를 확인해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+------+-----------+----------+
| Id | FirstName | LastName |
+------+-----------+----------+
| 10 | Carol | Taylor |
| 20 | John | Doe |
| 30 | John | Smith |
| 40 | David | Miller |
+------+-----------+----------+
4 rows in set (0.00 sec)
사용자 정의 변수를 활용한 조건 조회
이제 MySQL에서 사용자 정의 변수를 실제로 설정하고 활용하는 방법을 살펴보겠습니다. 아래 예제에서는 @myId라는 변수에 값 30을 할당한 뒤, 해당 값을 WHERE 절의 조건으로 사용합니다.
mysql> set @myId:=30;
Query OK, 0 rows affected (0.00 sec)
mysql> select *from DemoTable where Id=@myId;
변수를 활용한 위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+------+-----------+----------+
| Id | FirstName | LastName |
+------+-----------+----------+
| 30 | John | Smith |
+------+-----------+----------+
1 row in set (0.00 sec)
정리
MySQL에서 입력 매개변수 역할을 하는 변수는 SET @변수명 := 값; 형태로 선언하며, 세션 단위로 유지됩니다. 한 번 선언된 변수는 동일한 연결 세션 내에서 여러 쿼리에 재사용할 수 있으므로, 조건값이 자주 바뀌는 상황에서 코드의 가독성과 유지보수성을 크게 높여 줍니다.