Inicio > MYSQL > Variables mysql

VARIABLES MYSQL

24/11/2017MYSQL

 

En MySQL se pueden usar variables como en los lenguajes de programación y puede resultar bastante útil. Y se puede guardar el valor de una consulta Select a una variable.El sintaxis para asignar una variable dentro de una sentencia SELECT es: @var_name := value.
Un ejemplo de lo útil puede ser, es cuando necesitas eliminar filas de datos en tablas múltiples donde las filas están ligadas por un foreign key. Veamos un ejemplo:


SELECT @id := dept_id FROM departamentos WHERE departamento = 'Personal';

En el ejemplo anterior se guarda el id del departamentoen la variable @id.Ahora disponemos de una variable con un valor. Veamos un ejemplo de como hacer uso de esa variable:

SELECT * FROM empleados WHERE dept_id = @id;

Otra forma de asignar un valor a una variable es con la instrucción SET: SET @id = 0;
Un ejemplo muy bueno del uso de variables en MySQL es par aobtener un campo de forma aleatoria. Ya que si tenemos una tabla con 10.000 registros: se suele hacer así:

SELECT * FROM MY_TABLE ORDER BY RAND() LIMIT 1;

Pero esta forma es muy lenta. Pero usando variables se peude hacer mucho más rápido. Con el siguiente ejemplo se ve muy fácil:

SELECT @max_rows := count(*) FROM MY_TABLE;
SELECT @max_rows := FLOOR(RAND();
//Consulta donde se usa el número aleatorio SELECT * FROM MY_TABLE WHERE id = @row_id

La verdad es que el uso de variables con mysql es bastante fácil.
Ahora voy a escribir un poco sobre las variables de sistema, que son muy útiles para las personas que tratan de mejorar el rendimiento de su sesión de Mysql. Normalmente puedes ver el estado de estas variables utilizando el comando SHOW VARIABLES. Aunque las variables de sistema tienen valores por defecto, la mayoría de ellas pueden cambiarse en tiempo de ejecución usando el comando SET.
También hay variables de estado del servidor. Estos existen en las conexiones, y se puede actualizarlas en el archivo de configuración my.cnf Normalmente puedes ver el estado de estas variables utilizando el sentencia SHOW STATUS.