1. Descripción general de las variables en MySQL
Rol y utilidad de las variables en MySQL
Las variables en MySQL son herramientas útiles que permiten almacenar valores dentro de una consulta y reutilizarlos en múltiples sentencias. Esto elimina la necesidad de recuperar datos repetidamente, haciendo que las sentencias SQL sean más simples y eficientes.
En MySQL existen principalmente dos tipos de variables:
- Variables definidas por el usuario: variables temporales utilizadas dentro de una sesión específica.
- Variables del sistema: variables de configuración que controlan el comportamiento del servidor MySQL.
En esta sección, primero veremos en detalle las variables definidas por el usuario y luego explicaremos cómo utilizar las variables del sistema.
2. Tipos de variables en MySQL
2.1 Variables definidas por el usuario
Las variables definidas por el usuario se utilizan por sesión y no son accesibles desde otros clientes. Esto permite reutilizar las variables de forma segura dentro de la misma sesión. Se declaran utilizando el símbolo @
.
Ejemplo:
SET @user_id = 123;
SELECT @user_id;
De esta forma, se puede definir una variable con SET
y reutilizar su valor en la siguiente consulta. También existe el método SELECT INTO
para almacenar resultados directamente en una variable.
SELECT name INTO @user_name FROM users WHERE id = @user_id;
2.2 Variables del sistema
Las variables del sistema se utilizan para ajustar la configuración del servidor MySQL. Por ejemplo, permiten gestionar el número máximo de conexiones o los valores de tiempo de espera.
Ejemplo:
SHOW VARIABLES LIKE 'max_connections';
Esta consulta muestra el número máximo de conexiones simultáneas del servidor MySQL. Las variables del sistema pueden modificarse con el comando SET
, y aplicarse a todo el servidor o a nivel de sesión.

3. Declaración y uso de variables
3.1 Métodos de declaración de variables
Para declarar variables se utilizan SET
o SELECT INTO
. SET
es simple y permite asignar un valor directamente.
Ejemplo:
SET @user_name = 'Sato';
SELECT @user_name;
Por otro lado, con SELECT INTO
se pueden almacenar directamente en una variable los resultados de una consulta.
Ejemplo:
SELECT name INTO @user_name FROM users WHERE id = 123;
3.2 Uso de variables en consultas
Las variables se pueden reutilizar como parámetros dentro de las consultas. Por ejemplo, la siguiente consulta utiliza la variable @user_id
para recuperar información de un usuario.
Ejemplo:
SELECT * FROM users WHERE id = @user_id;
De este modo, las variables permiten mantener datos a lo largo de múltiples consultas dentro de la misma sesión.
4. Casos de uso comunes
4.1 Optimización de consultas
Almacenar datos que se usan con frecuencia en una variable y reutilizarlos en consultas posteriores puede mejorar el rendimiento.
Ejemplo:
SELECT MAX(id) INTO @max_id FROM users;
Aquí se guarda el ID de usuario más alto en una variable para reutilizarlo en consultas posteriores.
4.2 Casos de uso con fechas y horas
Las variables también se usan en cálculos de fechas o en la gestión de datos históricos, lo que facilita el trabajo con datos en series temporales.
Ejemplo:
SELECT NOW() INTO @current_time;
SELECT @current_time - INTERVAL 1 DAY INTO @yesterday;
Así, es posible almacenar la hora actual o una diferencia temporal específica en una variable y reutilizarla en otras consultas.

5. Uso de variables en procedimientos almacenados
El uso de variables dentro de un procedimiento almacenado permite manejar lógicas complejas de manera estructurada, mejorando además la reutilización del código. El siguiente ejemplo muestra un procedimiento para obtener información de un usuario.
Ejemplo:
CREATE PROCEDURE get_user_info(IN user_id INT, OUT user_name VARCHAR(255))
BEGIN
SELECT name INTO user_name FROM users WHERE id = user_id;
END;
Al llamar este procedimiento, se pasa un ID de usuario como argumento y el resultado se guarda en una variable.
6. Mejores prácticas en el uso de variables
6.1 Importancia de la inicialización
Las variables siempre deben inicializarse antes de ser utilizadas. Si se intenta acceder a una variable no inicializada, es posible que se devuelva NULL
. Esto es especialmente importante cuando la misma variable se usa en múltiples consultas.
6.2 Gestión del alcance dentro de la sesión
Las variables definidas por el usuario son válidas solo dentro de la sesión en la que se crean. Una vez finalizada la sesión, las variables se restablecen. Si se necesita mantener valores más allá de una sesión, es recomendable considerar otras opciones como el uso de tablas temporales.

7. Técnicas avanzadas
7.1 Procesamiento de datos con cursores
Al trabajar con grandes volúmenes de datos, los cursores permiten procesar los resultados de una consulta fila por fila. Esto facilita almacenar datos en variables mientras se realiza un procesamiento secuencial.
Ejemplo:
DECLARE cursor_user CURSOR FOR SELECT id, name FROM users;
El uso de cursores permite gestionar de manera eficiente múltiples filas de resultados.
8. Conclusión
El uso de variables en MySQL permite gestionar consultas de manera más eficiente, mejorando tanto la legibilidad del código como el rendimiento. La correcta combinación de variables definidas por el usuario y variables del sistema ofrece un control más preciso de las operaciones de datos. En particular, cuando se integran con procedimientos almacenados y cursores, las posibilidades de optimización en MySQL se amplían considerablemente.