Local Variables (지역 변수)
지역 변수는 Begin-End 블록 내에서만 유효한 변수 입니다. 이 변수들은 해당 블록을 벗어나면 존재하지 않게 됩니다.
지역 변수를 선연할 때는 DECLARE 키워드를 사용해야 합니다.
DELIMITER $$
create function f_emp_avg_salary (p_emp_no INTEGER) returns decimal(10,2)
deterministic no sql reads sql data
begin
declare v_avg_salary decimal(10,2); # v_avg_salary 변수 생성
begin
declare a_avg_salary_2 decimal(10,2); # a_avg_salary_2 변수 생성
end;
select
avg(s.salary)
into v_avg_salary from
employees e
join
salaries s on e.emp_no = s.emp_no
where
e.emp_no = p_emp_no;
return v_avg_salary;
end$$
DELIMITER ;
select v_avg_salary; # 사용 불가
위의 코드 처럼 함수 만들 때 사용 할 때가 종종 있습니다.
하지만 맨 아래 보시면 함수 내부에서 만든 v_avg_salary를 호출하게 되면 오류가 나는 것을 확인 하실 수 있을 것입니다.
즉, 이 변수를 사용하면 해당 블록 내에서만 사용할 수 있습니다
Session Variables(세션 변수)
세션 변수는 사용자가 MySQL 서버와 상호작용할 때 설정됩니다. 세션은 특정 시점에 시작되고 나중에 종료됩니다. 이러한 세션 변수는 특정 세션 동안에만 유효하며, 연결이 끊기면 사라집니다.
SET @s_var1 = 3;
SELECT @s_var1;
즉, 세션 변수는 세션이 유지되는 동안에만 유효하며, 해당 연결을 사용하는 클라이언트에만 영향을 미칩니다
Global Variables(전역 변수)
전역 변수는 MySQL 서버와 관련된 모든 연결에 적용되는 변수입니다. 전역 변수는 전체 서버에 영향을 미치며, 한 번 설정되면 서버가 재시작되지 않는 한 계속 유지됩니다. 전역 변수를 설정하는 방법은 다음과 같습니다.
SET GLOBAL max_connections = 1000;
SET @@global.max_connections = 1;
전역 변수는 모든 변수를 전역으로 설정할 수는 없고, 특정 시스템 변수들만 전역으로 설정이 가능합니다.
예를 들어:
- max_connection: 서버에 허용되는 최대 연결 수를 나타냅니다.
- max_join_size: 특정 연결에서 조인에 할당되는 최대 메모리 크기를 설정합니다.
이 처럼 위의 코드 또한 결국 최대 연결 수를 1로 설정한 것을 보실 수 있습니다.
728x90
'Data Analyst > SQL' 카테고리의 다른 글
SQL - Index, Case Statement (1) | 2024.09.17 |
---|---|
SQL - Trigger (0) | 2024.09.16 |
SQL - Variables, Functions (1) | 2024.09.13 |
SQL - Routine, Stored Procedure (0) | 2024.09.12 |
SQL - SELF JOIN, VIEW (0) | 2024.09.10 |