sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo declarar una variable en MySQL?

Existen principalmente tres tipos de variables en MySQL:

  1. Variables definidas por el usuario (con el prefijo @ ):

    Puede acceder a cualquier variable definida por el usuario sin declararla ni inicializarla. Si hace referencia a una variable que no ha sido inicializada, tiene un valor de NULL y un tipo de cadena.

    SELECT @var_any_var_name
    

    Puede inicializar una variable usando SET o SELECT declaración:

    SET @start = 1, @finish = 10;    
    

    o

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

    A las variables de usuario se les puede asignar un valor de un conjunto limitado de tipos de datos:entero, decimal, punto flotante, cadena binaria o no binaria, o valor NULL.

    Las variables definidas por el usuario son específicas de la sesión. Es decir, una variable de usuario definida por un cliente no puede ser vista ni utilizada por otros clientes.

    Se pueden usar en SELECT consultas utilizando Técnicas avanzadas de variables de usuario de MySQL .

  2. Variables locales (sin prefijo) :

    Las variables locales deben declararse usando DECLARE antes de acceder a él.

    Se pueden usar como variables locales y los parámetros de entrada dentro de un procedimiento almacenado:

    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);
    

    Si el DEFAULT falta la cláusula, el valor inicial es NULL .

    El alcance de una variable local es BEGIN ... END bloque dentro del cual se declara.

  3. Variables del sistema del servidor (con el prefijo @@ ):

    El servidor MySQL mantiene muchas variables del sistema configurado a un valor por defecto. Pueden ser de tipo GLOBAL , SESSION o BOTH .

    Las variables globales afectan el funcionamiento general del servidor, mientras que las variables de sesión afectan su funcionamiento para conexiones de clientes individuales.

    Para ver los valores actuales utilizados por un servidor en ejecución, use SHOW VARIABLES instrucción o SELECT @@var_name .

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

    Se pueden configurar al iniciar el servidor usando opciones en la línea de comando o en un archivo de opciones. La mayoría de ellos se pueden cambiar dinámicamente mientras el servidor se está ejecutando usando SET GLOBAL o 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;