ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL 변수 종류
    DataBase/MySQL 2022. 4. 27. 23:12

    1. 사용자 지정변수 (@ 가 앞에 붙습니다.)

    사용자 지정 변수(User-defined variables)는 선언하거나 초기화 하지 않고 접근할 수 있습니다. 만약 사용자 정의 변수가 초기화 되지 않았다면 string 타입의 NULL 값이 반환됩니다.

    SELECT @var_any_var_name

    SETSELECT 문을 사용해서 변수를 초기화 할 수 있습니다.(MySQL 8.0 에서는 SET 을 사용해서 변수를 초기화 할 것을 권장하고 있습니다. SET 외에 변수 초기화는 향후 버전에서 삭제 될 수 있다고 합니다.)

    Previous releases of MySQL made it possible to assign a value to a user variable in statements other than SET. This functionality is supported in MySQL 8.0 for backward compatibility but is subject to removal in a future release of MySQL.

    SET @start = 1, @finish= 10;
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;

    사용자 지정 변수는 제한된 데이터 타입으로만 할당할 수 있습니다.

    • integer, decimal, floating-point, binary 또는 nonbinary string
    • NULL

    사용자 정의 변수는 세션에 따라 다릅니다. 즉, 사용자 A와 사용자 B는 서로가 만든 변수를 볼 수 없습니다. (하지만 performance schemauser_variables_by_thread 에 대한 권한이 있는 사용자는 모든 세션에서 어떤 사용자가 정의한 변수던지 다 볼 수 있습니다.)

    2. 지역변수 (앞에 아무것도 붙지 않습니다.)

    지역변수(Local variables) 는 선언할 때 DECLARE 문이 앞에 있어야 합니다.

    지역변수는 저장 프로시저 내에서 지역 변수 및 입력 매개변수로 사용할 수 있습니다.

    DELIMITER //
    ​
    CREATE PROCEDURE sp_test(var1 INT) 
    BEGIN   
        DECLARE start  INT unsigned DEFAULT 1;  
        DECLARE finish INT unsigned DEFAULT 10;
    ​
        SELECT  var1, start, finish;
    END; //
    ​
    DELIMITER ;
    ​
    CALL sp_test(5);

    만약 DEFAULT 절이 없다면 초기값은 NULL 이 됩니다.

    지역변수의 유효한 범위는 선언된 BEGIN ... END 안 까지 입니다.

    3. 서버 시스템 변수(@@ 가 앞에 붙습니다.)

    MySQL 서버는 초기값으로 설정된 많은 시스템 변수가 있습니다. 이 시스템 변수들은 GLOBAL, SESSION, 타입 중 하나 또는 둘 다(GLOBAL + SESSION) 입니다.

    GLOBAL 변수는 서버의 전체 작업에 영향을 미치는 반면 SESSION 변수는 개별 클라이언트 연결에 대한 작업에 영향을 줍니다.

    실행 중인 서버에서 사용하는 현재 값을 보려면 SHOW VARIABLES 문 또는 SELECT @@var_name을 사용합니다.

    SHOW VARIABLES LIKE '%wait_timeout%';
    ​
    SELECT @@sort_buffer_size;

    명령줄이나 옵션 파일에서 옵션을 사용하여 서버 시작 시 설정할 수 있습니다. 대부분은 SET GLOBAL 또는 SET SESSION을 사용하여 서버가 실행되는 동안 동적으로 변경할 수 있습니다.

    -- Syntax to Set value to a Global variable:
    SET GLOBAL sort_buffer_size=1000000;
    SET @@global.sort_buffer_size=1000000;
    ​
    -- Syntax to Set value to a Session variable:
    SET sort_buffer_size=1000000;
    SET SESSION sort_buffer_size=1000000;
    SET @@sort_buffer_size=1000000;
    SET @@local.sort_buffer_size=10000;

    출처

    'DataBase > MySQL' 카테고리의 다른 글

    MySQL Begin 과 Start Transaction  (0) 2022.12.16
    B-Tree 와 B+Tree 의 차이점  (0) 2022.08.02
    체인지 버퍼  (0) 2022.08.02
    MySQL 사용자 변수  (0) 2022.04.25

    댓글