Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como declarar uma variável no MySQL?


Existem basicamente três tipos de variáveis ​​no MySQL:

  1. Variáveis ​​definidas pelo usuário (prefixado com @ ):

    Você pode acessar qualquer variável definida pelo usuário sem declará-la ou iniciá-la. Se você se referir a uma variável que não foi inicializada, ela terá um valor de NULL e um tipo de string.
    SELECT @var_any_var_name
    

    Você pode inicializar uma variável usando SET ou SELECT demonstração:
    SET @start = 1, @finish = 10;    
    

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

    As variáveis ​​de usuário podem receber um valor de um conjunto limitado de tipos de dados:inteiro, decimal, ponto flutuante, string binária ou não binária ou valor NULL.

    As variáveis ​​definidas pelo usuário são específicas da sessão. Ou seja, uma variável de usuário definida por um cliente não pode ser vista ou usada por outros clientes.

    Eles podem ser usados ​​em SELECT consultas usando Técnicas avançadas de variáveis ​​de usuário MySQL .

  2. Variáveis ​​locais (sem prefixo):

    Variáveis ​​locais precisam ser declaradas usando DECLARE antes de acessá-lo.

    Eles podem ser usados ​​como variáveis ​​locais e parâmetros de entrada dentro de um procedimento armazenado:
    DELIMITER //
    
    CREATE PROCEDURE sp_test(var1 INT) 
    BEGIN   
        DECLARE start  INT unsigned DEFAULT 1;  
        DECLARE finish INT unsigned DEFAULT 10;
    
        SELECT  var1, start, finish;
    
        SELECT * FROM places WHERE place BETWEEN start AND finish; 
    END; //
    
    DELIMITER ;
    
    CALL sp_test(5);
    

    Se o DEFAULT cláusula está faltando, o valor inicial é NULL .

    O escopo de uma variável local é o BEGIN ... END bloco dentro do qual é declarado.

  3. Variáveis ​​de sistema do servidor (prefixado com @@ ):

    O servidor MySQL mantém muitas variáveis ​​de sistema configurado para um valor padrão.Eles podem ser do tipo GLOBAL , SESSION ou BOTH .

    As variáveis ​​globais afetam a operação geral do servidor, enquanto as variáveis ​​de sessão afetam sua operação para conexões de clientes individuais.

    Para ver os valores atuais usados ​​por um servidor em execução, use o SHOW VARIABLES instrução ou SELECT @@var_name .
    SHOW VARIABLES LIKE '%wait_timeout%';
    
    SELECT @@sort_buffer_size;
    

    Eles podem ser definidos na inicialização do servidor usando opções na linha de comando ou em um arquivo de opções. A maioria deles pode ser alterada dinamicamente enquanto o servidor está em execução usando SET GLOBAL ou 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;