본문 바로가기
카테고리 없음

[MySQL] SET@ 세션변수/사용자변수 사용방법

by niahh 2025. 2. 26.

02262025 수요일

SET@ 변수 사용방법

세션변수, 또는 사용자변수는 데이터베이스 세션동안 유지되는 변수이다. 사용자와 데이터베이스간 연결이 유지되는 동안을 ‘데이터베이스 세션’이라고 한다. 세션변수/사용자 변수는 데이터베이스 연결된 동안에만 값이 유지되며 연결이 종료되면 사라지는 변수이다. 현재세션 내에서만 유지되며 테이블에 저장되는 값이 아니다.

변수 선언 및 할당 방법

set @my_var = 100;
select @my_var 

SELECT … INTO @variable 를 사용하면 쿼리 결과를 변수에 저장 가능하다.

select count(*) into @total_employees from employees;

select @total_employees; -- print total employees

세션변수와 select 문으로 급여를 인상하고 값을 조회해볼 수 있다

set @increase_rate = 1.1;

select name, salary, salary * increase_rate as new_salary
from employees;

increase_rate 라는 세션 변수를 선언해 월급 인상률을 할당하고 select 절에서 컬럼을 선택할때 salary 와 @increase_rate 변수를 곱해준다.

세션변수와 update문을 사용해볼 수도 있다. 세션변수를 사용하여 where 절의 조건으로 줄 수 있다.

set @avg_salary = (select avg(salary) from employees); -- 쿼리문 결과 값을 세션 변수에 할당. 

update employees 
set salary = salary * 1.05 
where salary < @avg_salary; -- 평균보다 적은 월급을 가진 직원들의 급여를 인상한다. 

최고급여를 받는 직원 정보를 새로운 테이블에 삽입할 수 있다. 세션변수와 insert into 문을 활용한다.

set @max_salary = (select max(salary) from employees);

insert into high_paid_employees (name, salary) --

select name, salary from employees where salary = @max_salary 

⇒ ! select 문을 이용해서도 테이블에 데이터를 삽입할 수 있다. 다른 테이블의 데이터를 조회한 후, 그 결과로 가져와진 행들을 새로운 테이블에 삽입하는 것이다. 다음 포스팅 때 더 자세히 다루겠지만, 기본 문법은 다음과 같다

INSERT INTO target_table (column1, column2, ...)  
SELECT column1, column2, ... FROM source_table WHERE 조건;

⇒ source table 에서 데이터를 먼저 조회한후, target_table 에 삽입하는 방식이다. 기본 데이터 삽입 문법인 VALUES 없이 SELECT 절에서 나열된 컬럼 순서대로 target_table 에 데이터를 삽입할 수 있다.