Existen principalmente tres tipos de variables en MySQL:
-
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
oSELECT
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 . -
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 esNULL
.El alcance de una variable local es
BEGIN ... END
bloque dentro del cual se declara. -
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
oBOTH
.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 oSELECT @@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
oSET 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;