En este artículo, vamos a explorar los conceptos clave de la programación de bases de datos en MySQL, utilizando la estructura de una base de datos llamada «Comisaria» como ejemplo. Esta base de datos incluye tablas para gestionar agentes, ciudadanos, casos y reportes, y nos servirá para entender cómo funcionan procedimientos, funciones, triggers, y otros elementos importantes en MySQL.
Declaración y Uso de Variables
Las variables en MySQL se declaran y se asignan valores de la siguiente manera:
DECLARE nombre_variable tipo_variable [DEFAULT valor];
SET nombre_variable = valor_variable;
También se pueden asignar valores a variables como resultado de una consulta:
SELECT campo1, campo2 INTO variable1, variable2 FROM nombre_tabla WHERE condición;
Estructuras de Control de Flujo
Sentencia IF
La sentencia IF
permite ejecutar bloques de código condicionalmente:
IF condicion THEN
sentencias;
ELSEIF condicion2 THEN
sentencias;
ELSE
sentencias;
END IF;
Sentencia CASE
La sentencia CASE
se utiliza para seleccionar entre múltiples opciones:
CASE variable
WHEN valor1 THEN sentencias;
WHEN valor2 THEN sentencias;
ELSE sentencias;
END CASE;
Bucles y Control de Bucles
MySQL soporta varios tipos de bucles: LOOP
, REPEAT
, y WHILE
.
LOOP
[etiqueta_inicio:] LOOP
sentencias;
END LOOP [etiqueta_fin];
REPEAT
[etiqueta_inicio:] REPEAT
sentencias;
UNTIL condicion;
END REPEAT [etiqueta_fin];
WHILE
[etiqueta_inicio:] WHILE condicion DO
sentencias;
END WHILE [etiqueta_fin];
Salir de Bucles: LEAVE y ITERATE
LEAVE etiqueta;
para salir de un bucle etiquetado.ITERATE etiqueta;
para reiniciar un bucle etiquetado.
Procedimientos y Funciones Almacenadas
Los procedimientos y funciones almacenadas son conjuntos de comandos SQL almacenados en el servidor.
Crear un Procedimiento
CREATE PROCEDURE nombre_procedimiento([param1 tipo, param2 tipo, ...])
BEGIN
sentencias;
END;
Crear una Función
CREATE FUNCTION nombre_funcion([param1 tipo, param2 tipo, ...]) RETURNS tipo
BEGIN
sentencias;
END;
Ejemplos de Procedimientos
Listar Usuarios
CREATE PROCEDURE lista_usuarios()
BEGIN
SELECT * FROM usuarios;
END;
Ver Reservas de una Pista
CREATE PROCEDURE ver_pista_reserva(p_id_reserva INT)
BEGIN
SELECT * FROM reservas WHERE id_pista = p_id_pista;
END;
Control de Transacciones
Para manejar varias operaciones relacionadas como una transacción:
START TRANSACTION;
-- operaciones SQL
COMMIT;
Control de Errores
Gestionar errores mediante excepciones:
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END;
Triggers
Los triggers son procedimientos que se activan automáticamente cuando ocurre un evento específico en una tabla. Los eventos pueden ser INSERT
, UPDATE
, o DELETE
, y pueden activarse antes (BEFORE
) o después (AFTER
) del evento.
Crear un Trigger
CREATE TRIGGER nombre_trigger BEFORE INSERT ON nombre_tabla
FOR EACH ROW
BEGIN
-- sentencias SQL
END;
Ejemplo de Trigger
Calcular automáticamente la edad de un usuario al insertarlo:
CREATE TRIGGER nuevo_usuario BEFORE INSERT ON clientes
FOR EACH ROW
BEGIN
IF NEW.fecha_nacimiento IS NOT NULL THEN
SET NEW.edad = YEAR(CURRENT_DATE()) - YEAR(NEW.fecha_nacimiento);
END IF;
END;
Ventajas y Desventajas de Procedimientos Almacenados
Ventajas
- Reutilización de Código: Permiten ejecutar el mismo código desde diferentes aplicaciones sin necesidad de duplicarlo.
- Seguridad: Las aplicaciones no necesitan acceso directo a los datos.
- Reducción de Tráfico de Red: Menos datos enviados entre cliente y servidor.
Desventajas
- Limitaciones de Código: No se pueden combinar con otros lenguajes como Java o C++.
- Complejidad: Difíciles de escribir y mantener, requieren conocimientos específicos.
Uso de DELIMITER
Para crear procedimientos o funciones sin conflictos con el delimitador ;
:
DELIMITER |
CREATE PROCEDURE ver_pistas()
BEGIN
SELECT * FROM pistas;
END;
|
DELIMITER ;
Conclusión
La programación de bases de datos en MySQL ofrece poderosas herramientas para gestionar datos de manera eficiente y segura. A través de procedimientos, funciones y triggers, es posible automatizar y asegurar muchas operaciones comunes, facilitando así el manejo de datos en aplicaciones complejas. La base de datos de ejemplo «Comisaria» ilustra cómo estos conceptos pueden implementarse en un entorno real.
Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.