MySQL에서 @ 기호란 무엇인가?
MySQL에서 @ 기호는 사용자 정의 변수(user-defined variable)를 선언하고 값을 저장할 때 사용됩니다. SET 명령어와 함께 사용하면 세션 내에서 값을 저장해 두었다가 이후 쿼리에서 재사용할 수 있어 매우 유용합니다.
기본 문법
사용자 정의 변수를 설정하는 기본 문법은 다음과 같습니다.
SET @변수명 := 값;
또는 아래와 같이 작성할 수도 있습니다.
SET @변수명 = 값;
예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1331
-> (
-> Id int,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.51 sec)데이터 삽입하기
INSERT 명령어를 사용하여 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable1331 values(10,'Chris'); Query OK, 1 row affected (0.71 sec) mysql> insert into DemoTable1331 values(101,'David'); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable1331 values(40,'Bob'); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable1331 values(30,'Mike'); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable1331 values(60,'John'); Query OK, 1 row affected (0.12 sec)
저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1331;
실행 결과는 다음과 같습니다.
+------+-------+ | Id | Name | +------+-------+ | 10 | Chris | | 101 | David | | 40 | Bob | | 30 | Mike | | 60 | John | +------+-------+ 5 rows in set (0.00 sec)
@ 변수를 활용한 쿼리 실행
이제 @ 기호를 사용하여 변수를 설정하고, 해당 변수를 WHERE 조건절에서 활용해 보겠습니다.
mysql> set @Value:=40; Query OK, 0 rows affected (0.00 sec) mysql> select * from DemoTable1331 where Id > @Value;
위 쿼리는 @Value 변수에 40을 저장한 후, Id가 40보다 큰 레코드만 조회합니다. 실행 결과는 다음과 같습니다.
+------+-------+ | Id | Name | +------+-------+ | 101 | David | | 60 | John | +------+-------+ 2 rows in set (0.03 sec)
정리 및 참고 사항
- @ 기호는 세션 단위의 사용자 정의 변수를 선언하는 데 사용됩니다.
- SET 명령어 또는 SELECT 문 안에서 직접 초기화할 수 있습니다.
- 변수는 현재 연결(세션)이 종료되면 자동으로 소멸됩니다.
- WHERE 절, ORDER BY 절 등 다양한 위치에서 조건 값으로 활용할 수 있습니다.
이처럼 @ 변수를 활용하면 반복되는 값을 한 번만 선언하여 여러 쿼리에서 재사용할 수 있어 코드의 가독성과 유지보수성이 향상됩니다.