Publicidad

Índices en MySQL y el uso de LIKE: guía completa

Imagen
 Índices en MySQL y el uso de LIKE: guía completa Los índices en MySQL son una de las claves más importantes para mejorar el rendimiento de las consultas SQL. Sin embargo, no siempre se usan correctamente, especialmente cuando entran en juego operadores como LIKE , BETWEEN o consultas con varias condiciones. En esta guía completa aprenderás qué son los índices , cuándo se usan , cómo afectan los LIKE al rendimiento , cómo interpretarlos con EXPLAIN y cómo saber si un índice es único . Todo explicado de forma clara, sencilla y orientada a exámenes DAM/ASIR y a la práctica real. ¿Qué es un índice en MySQL? Un índice es una estructura que permite a MySQL encontrar datos más rápido , evitando recorrer toda la tabla fila por fila. Es muy parecido al índice de un libro: no lees todo, vas directamente a la página que te interesa. Sin índices: MySQL hace un escaneo completo de la tabla ( ALL ) Consultas lentas en tablas grandes Con índices: Acceso rápido a los datos Menor número de fil...
Publicidad

Cómo crear un procedimiento almacenado con cursor en MySQL para recorrer un usuario

Cómo crear un procedimiento almacenado con cursor en MySQL para recorrer un usuario

En este tutorial aprenderás paso a paso cómo crear un procedimiento almacenado con cursor en MySQL para recorrer registros de un usuario específico dentro de una base de datos.
Trabajaremos con una base de datos llamada tiendaonline y mostraremos cómo verificar si un cliente con determinado id_cliente coincide con el nombre “Luis Pérez”.

Este ejercicio es perfecto para comprender cómo funcionan los cursores, los manejadores de errores y los bucles (LOOP) en MySQL.


Objetivo del procedimiento

Queremos recorrer un registro dentro de la tabla clientes para comprobar si el nombre de un usuario con un ID concreto coincide con “Luis Pérez”.
Si coincide, el procedimiento devolverá un mensaje confirmando que el usuario existe; de lo contrario, mostrará que no coincide.


🧩 Paso a paso del procedimiento almacenado

1. Seleccionar la base de datos

Antes de comenzar, selecciona la base de datos con la que vas a trabajar:

USE tiendaonline;

2. Comprobar el cliente

Puedes verificar que el cliente con id_cliente = 2 existe y conocer su nombre:

SELECT c.nombre FROM clientes AS c WHERE id_cliente = 2;

3. Eliminar el procedimiento si ya existe

Esto evita conflictos al volver a crearlo:

DROP PROCEDURE IF EXISTS recorrerElUsuario;

4. Cambiar el delimitador

Es necesario cambiar el delimitador (;//) para poder definir correctamente el cuerpo del procedimiento:

DELIMITER //

5. Crear el procedimiento almacenado

Definimos el procedimiento recorrerElUsuario, que recibe como parámetro de entrada el ID del cliente.

CREATE PROCEDURE recorrerElUsuario(IN p_Id INT) BEGIN DECLARE variableNombre VARCHAR(30); DECLARE semaforo INT DEFAULT 0; DECLARE cursorNombre CURSOR FOR SELECT c.nombre FROM clientes AS c WHERE id_cliente = p_Id; DECLARE CONTINUE HANDLER FOR NOT FOUND SET semaforo = 1; OPEN cursorNombre; miBucle: LOOP FETCH cursorNombre INTO variableNombre; IF semaforo = 1 THEN LEAVE miBucle; END IF; IF variableNombre = 'Luis Pérez' THEN SELECT CONCAT('✅ El usuario existe en la base de datos: ', variableNombre) AS resultado; LEAVE miBucle; ELSE SELECT CONCAT('❌ El usuario no coincide en la base de datos: ', variableNombre) AS resultado; END IF; END LOOP; CLOSE cursorNombre; END // DELIMITER ;

6. Llamar al procedimiento

Una vez creado, puedes ejecutarlo así:

CALL recorrerElUsuario(2);

Explicación del código

  • DECLARE variableNombre: almacena el nombre obtenido desde el cursor.

  • DECLARE semaforo: actúa como bandera para detectar el final de los registros.

  • DECLARE cursorNombre CURSOR FOR ...: define el cursor que selecciona el nombre del cliente según el ID indicado.

  • CONTINUE HANDLER FOR NOT FOUND: se activa automáticamente cuando ya no hay filas que recorrer.

  • OPEN cursorNombre: abre el cursor.

  • FETCH ... INTO variableNombre: recupera cada fila y la almacena en la variable.

  • IF variableNombre = 'Luis Pérez': compara el nombre con el valor buscado y devuelve un mensaje.

  • LEAVE miBucle: sale del bucle una vez encontrada la coincidencia o cuando no quedan más registros.

  • CLOSE cursorNombre: cierra el cursor para liberar recursos.


Resultado esperado

Si el cliente con id_cliente = 2 se llama Luis Pérez, MySQL devolverá:

✅ El usuario existe en la base de datos: Luis Pérez

Si no coincide:

❌ El usuario no coincide en la base de datos: [nombre encontrado]

Recomendaciones adicionales

  • Usa cursores solo cuando sea necesario, ya que suelen consumir más recursos que las consultas directas.

  • Siempre cierra los cursores al final del procedimiento.

  • Si necesitas recorrer múltiples registros, puedes incluir más lógica dentro del bucle LOOP.

  • Cambia el delimitador (DELIMITER //) solo dentro del bloque de definición, y restáuralo después.

Cómo crear un procedimiento almacenado con cursor en MySQL para recorrer un usuario


Cómo crear un procedimiento almacenado con cursor en MySQL para recorrer un usuario
procedimiento almacenado con un cursor para recorrer un usuario en MySQL



Procedimiento almacenado con cursor

FAQ — Preguntas frecuentes

¿Qué es un cursor en MySQL?
Un cursor es un puntero que permite recorrer los resultados de una consulta fila por fila. Es útil cuando necesitas procesar registros de forma secuencial dentro de un procedimiento almacenado.


¿Cuándo se recomienda usar cursores?
Cuando el procesamiento requiere lógica por cada registro (validaciones, cálculos, comparaciones, etc.) que no se puede resolver con una sola sentencia SQL.


¿Qué hace el manejador CONTINUE HANDLER FOR NOT FOUND?
Indica al procedimiento qué hacer cuando no hay más registros que procesar. En este caso, activa la variable semaforo para salir del bucle.


 ¿Qué ocurre si el procedimiento no encuentra ningún registro?
El cursor no recupera datos, el manejador se activa y el bucle finaliza sin mostrar coincidencias.


¿Puedo recorrer más de un registro a la vez?
Sí. Simplemente cambia la consulta del cursor (SELECT ...) para devolver varios resultados y ajusta el código dentro del LOOP según tus necesidades.


Comentarios

Publicidad
Publicidad

¿Qué aprenderás en Bit Área de informática para profesionales?

¡Bienvenid@ a Bit Área de Informática! Tu espacio de referencia para aprender, optimizar y dominar la tecnología. Nos especializamos en guías detalladas y actualizadas sobre Windows, Linux y Android, junto con trucos, consejos y soluciones técnicas pensadas para profesionales y entusiastas de la informática. Nos apasiona mantenerte al día de las últimas tendencias en aplicaciones. Analizamos innovaciones, desglosamos funciones, compartimos recomendaciones y ofrecemos información detallada para que siempre estés a la vanguardia del mundo digital. Desde apps esenciales para productividad hasta las más divertidas para entretenimiento, te ayudamos a descubrir lo último en tecnología y sacarle el máximo provecho.
Junto a nosotros, aprenderás a reparar, optimizar y gestionar tus sistemas y dispositivos, así como a liberar espacio, solucionar problemas comunes y simplificar tu vida diaria. En Bit Área de Informática, transformamos el conocimiento en resultados: explora, aprende y domina la tecnología mientras te mantienes a la vanguardia del futuro digital. ¡Forma parte de nuestra comunidad!
Publicidad