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 에 데이터를 삽입할 수 있다.