mysql 변수 소개

2862 단어 mysql
mysql 매뉴얼에 따르면 mysql의 변수는 두 가지로 나뉘는데 그것이 바로 시스템 변수와 사용자 변수이다.그러나 실제 사용에서 국부 변수, 회화 변수 등 개념도 만날 수 있다.개인의 느낌에 따라 mysql 변수는 크게 네 가지 유형으로 나눌 수 있다.
1. 국부 변수.
국부 변수는 일반적으로 sql 문장 블록에 사용됩니다. 예를 들어 저장 프로세스의begin/end입니다.그 작용역은 이 문장 블록에만 한정되며, 이 문장 블록이 실행된 후 국부 변수는 사라집니다.국부 변수는 일반적으로declare로 설명하고default로 기본값을 설명할 수 있습니다.
예를 들어, 저장 프로세스 중에 로컬 변수를 정의합니다.

drop procedure if exists add;
create procedure add
(
    in a int,
    in b int
)
begin
    declare c int default 0;
    set c = a + b;
    select c as c;
end;

상기 저장 과정 중 정의된 변수 c는 국부 변수이다
2. 사용자 변수.
사용자 변수의 작용역은 국부 변수보다 넓다.사용자 변수는 현재 전체 연결에 적용될 수 있지만 현재 연결이 끊어지면 정의된 사용자 변수가 사라집니다.사용자 변수는 다음과 같이 정의됩니다.
`@   `

사용자 변수에 값을 부여하는 방법은 두 가지가 있습니다.하나는 '=' 번호를 직접 사용하고 다른 하나는 '=' 번호를 사용합니다. set 명령을 사용하여 사용자 변수에 값을 부여할 때 두 가지 방식을 모두 사용할 수 있으며, select 문장을 사용하여 사용자 변수에 값을 부여할 때 := 방식만 사용할 수 있습니다. 왜냐하면 select 문장에서 = 번호는 비교 조작부호로 간주되기 때문입니다.
예제 절차는 다음과 같습니다.

drop procedure if exists math;
create procedure math
(
    in a int,
    in b int
)
begin
    set @var1 = 1;
    set @var2 = 2;
    select @sum:=(a + b) as sum, @dif:=(a - b) as dif;
end;

mysql> call math(3, 4);

+——+——+ | sum | dif | +——+——+ | 7 | -1 | +——+——+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

mysql> select @var1; //var1     

+——-+ | @var1 | +——-+ | 1 | +——-+ 1 row in set (0.00 sec)

mysql> select @var2; //var2     

+——-+ | @var2 | +——-+ | 2 | +——-+ 1 row in set (0.00 sec)
3. 세션 변수
서버는 연결된 클라이언트마다 일련의 세션 변수를 유지합니다.클라이언트가 연결될 때 해당 전역 변수의 현재 값을 사용하여 클라이언트의 세션 변수를 초기화합니다.세션 변수를 설정하는 데는 특별한 권한이 필요하지 않지만 클라이언트는 자신의 세션 변수만 변경할 수 있고 다른 클라이언트의 세션 변수는 변경할 수 없습니다.세션 변수는 사용자 변수와 마찬가지로 현재 연결에만 적용됩니다.현재 연결이 끊겼을 때 설정된 모든 세션 변수가 효력을 상실합니다.세션 변수를 설정하는 방법은 다음과 같습니다.

set session var_name = value;
set @@session.var_name = value;
set var_name = value;

세션 변수를 보는 방법에는 다음 세 가지가 있습니다.

select @@var_name;
select @@session.var_name;
show session variables like "%var%";

mysql> show session variables;

4. 글로벌 변수
전역 변수는 서버 전체 작업에 영향을 줍니다.서버가 시작되면 모든 글로벌 변수가 기본값으로 초기화됩니다.이러한 기본값은 옵션 파일이나 명령줄에 지정된 옵션을 변경할 수 있습니다.글로벌 변수를 변경하려면 SUPER 권한이 있어야 합니다.전역 변수는 서버의 전체 생명주기에 작용하지만, 다시 시작할 수 없습니다.다시 시작하면 모든 설정의 전역 변수가 효력을 상실합니다.전역 변수를 다시 시작한 후에 계속 적용하려면 해당하는 설정 파일을 변경해야 합니다.
글로벌 변수를 설정하려면 다음 두 가지 방법이 있습니다.

set global var_name = value; //  :   global    。    ,set           GLOBAL、SESSION  LOCAL,    SESSION
set @@global.var_name = value; //  

글로벌 변수를 보려면 다음 두 가지 방법이 있습니다.

select @@global.var_name;
show global variables like "%var%";

mysql> show global variables;

좋은 웹페이지 즐겨찾기