Funciones de MySQL y Lógica Personalizada

MySQLBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a crear y utilizar funciones personalizadas en MySQL. El laboratorio se centra en encapsular lógica reutilizable dentro de su base de datos creando una función para calcular el área de un rectángulo.

Los pasos implican conectarse al servidor MySQL, crear una base de datos (si es necesario), definir la función calculate_rectangle_area con parámetros de entrada para la longitud y el ancho, y especificar el tipo de dato de retorno. El cuerpo de la función calcula el área y devuelve el resultado. Los pasos posteriores cubrirán el uso de esta función en una consulta SELECT, la prueba de su salida con datos de muestra y, finalmente, la eliminación de la función.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 92%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Conectar a MySQL y Crear una Base de Datos

En este paso, se conectará al servidor MySQL y creará una base de datos donde creará y utilizará su función personalizada.

Primero, abra su terminal y conéctese al servidor MySQL como usuario root. Ejecute el siguiente comando una vez al principio del laboratorio:

sudo mysql -u root

Este comando utiliza sudo para ejecutar el cliente mysql como usuario root. Dado que el usuario root en este entorno no tiene una contraseña configurada, se conectará directamente al shell de MySQL. Verá el prompt mysql>.

Permanezca en el shell de MySQL para todos los pasos subsiguientes. No salga hasta el final del laboratorio.

Ahora, creemos una base de datos llamada my_functions_db. Esta base de datos se utilizará para almacenar nuestra tabla y función. Ejecute el siguiente comando SQL en el prompt mysql>:

CREATE DATABASE IF NOT EXISTS my_functions_db;

Después de crear la base de datos, selecciónela para que sea la base de datos predeterminada para las operaciones subsiguientes:

USE my_functions_db;

Debería ver un mensaje que indica que la base de datos ha sido cambiada.

Ahora está conectado a la base de datos my_functions_db y está listo para crear su función personalizada en el siguiente paso.

Crear una Función para Calcular el Área del Rectángulo

En este paso, creará una función personalizada en MySQL para calcular el área de un rectángulo. Esta función tomará la longitud y el ancho como entrada y devolverá el área calculada.

Asegúrese de que todavía está en el shell de MySQL y ya ha seleccionado la base de datos my_functions_db como se describe en el paso anterior.

Ahora, creemos la función llamada calculate_rectangle_area. Esta función aceptará dos parámetros enteros, length y width, y devolverá un entero que representa el área.

Ejecute el siguiente comando SQL en el shell de MySQL:

DELIMITER //

CREATE FUNCTION calculate_rectangle_area (length INT, width INT)
RETURNS INT
DETERMINISTIC
BEGIN
  DECLARE area INT;
  SET area = length * width;
  RETURN area;
END //

DELIMITER ;

Analicemos este comando:

  • DELIMITER //: Esto cambia el delimitador de sentencia del punto y coma (;) predeterminado a //. Esto es necesario porque la definición de la función contiene puntos y coma dentro de su cuerpo.
  • CREATE FUNCTION calculate_rectangle_area (length INT, width INT): Esto define el nombre de la función (calculate_rectangle_area) y sus parámetros de entrada (length y width, ambos de tipo INT).
  • RETURNS INT: Esto especifica que la función devolverá un valor entero.
  • DETERMINISTIC: Esta palabra clave indica que la función siempre producirá el mismo resultado para los mismos valores de entrada. Esto ayuda a MySQL a optimizar las consultas que utilizan la función.
  • BEGIN ... END: Este bloque contiene la lógica de la función.
  • DECLARE area INT;: Esto declara una variable local llamada area de tipo INT dentro de la función.
  • SET area = length * width;: Esto calcula el área multiplicando los parámetros length y width y asigna el resultado a la variable area.
  • RETURN area;: Esto devuelve el valor almacenado en la variable area como la salida de la función.
  • END //: Esto marca el final de la definición de la función, utilizando el delimitador temporal //.
  • DELIMITER ;: Esto cambia el delimitador de vuelta al punto y coma (;) predeterminado.

Después de ejecutar este comando, la función calculate_rectangle_area se creará en la base de datos my_functions_db.

Para verificar que la función se creó correctamente, puede listar las funciones en la base de datos actual:

SHOW FUNCTION STATUS LIKE 'calculate_rectangle_area';

Este comando mostrará información sobre la función, confirmando su existencia.

Usar la Función en una Consulta SELECT

Ahora que ha creado la función calculate_rectangle_area, puede usarla en una consulta SELECT para calcular el área de rectángulos basándose en los datos almacenados en una tabla.

Continúe trabajando en la misma sesión del shell de MySQL y asegúrese de que todavía está utilizando la base de datos my_functions_db.

Primero, creemos una tabla llamada rectangles para almacenar las dimensiones de diferentes rectángulos. Ejecute el siguiente comando SQL:

CREATE TABLE IF NOT EXISTS rectangles (
  id INT AUTO_INCREMENT PRIMARY KEY,
  length INT,
  width INT
);

Este comando crea una tabla con un id de auto-incremento como clave primaria, y columnas para length y width.

A continuación, inserte algunos datos de ejemplo en la tabla rectangles:

INSERT INTO rectangles (length, width) VALUES (5, 10);
INSERT INTO rectangles (length, width) VALUES (7, 8);
INSERT INTO rectangles (length, width) VALUES (12, 3);

Estos comandos agregan tres filas a la tabla rectangles con diferentes valores de longitud y ancho.

Ahora, puede usar la función calculate_rectangle_area en una consulta SELECT para recuperar las dimensiones del rectángulo y sus áreas calculadas. Ejecute el siguiente comando SQL:

SELECT id, length, width, calculate_rectangle_area(length, width) AS area FROM rectangles;

En esta consulta:

  • SELECT id, length, width: Esto selecciona las columnas id, length y width de la tabla rectangles.
  • calculate_rectangle_area(length, width): Esto llama a la función calculate_rectangle_area, pasando los valores de las columnas length y width de cada fila como argumentos.
  • AS area: Esto asigna un alias area al resultado devuelto por la función, haciendo que la columna de salida sea más legible.
  • FROM rectangles: Esto especifica que los datos deben recuperarse de la tabla rectangles.

El resultado de esta consulta mostrará el id, length, width y el area calculada para cada rectángulo en la tabla. Debería ver una salida similar a esta:

+----+--------+-------+------+
| id | length | width | area |
+----+--------+-------+------+
|  1 |      5 |    10 |   50 |
|  2 |      7 |     8 |   56 |
|  3 |     12 |     3 |   36 |
+----+--------+-------+------+

Esto demuestra cómo utilizar eficazmente su función personalizada dentro de una consulta SQL estándar para realizar cálculos sobre sus datos.

Probar la Salida de la Función con Datos de Muestra

En este paso, probará aún más la función calculate_rectangle_area insertando más datos de muestra en la tabla rectangles y verificando las áreas calculadas. Esto ayuda a asegurar que la función funcione correctamente con diferentes valores de entrada.

Continúe trabajando en la misma sesión del shell de MySQL y asegúrese de que todavía está utilizando la base de datos my_functions_db.

Ahora, inserte filas adicionales en la tabla rectangles con diferentes valores de longitud y ancho:

INSERT INTO rectangles (length, width) VALUES (10, 10);
INSERT INTO rectangles (length, width) VALUES (2, 5);
INSERT INTO rectangles (length, width) VALUES (15, 4);

Estos comandos agregan tres filas más a la tabla rectangles.

Ahora, ejecute la consulta SELECT nuevamente para ver las áreas calculadas para todos los rectángulos, incluidos los recién agregados:

SELECT id, length, width, calculate_rectangle_area(length, width) AS area FROM rectangles;

La salida ahora incluirá las áreas para los nuevos rectángulos:

+----+--------+-------+------+
| id | length | width | area |
+----+--------+-------+------+
|  1 |      5 |    10 |   50 |
|  2 |      7 |     8 |   56 |
|  3 |     12 |     3 |   36 |
|  4 |     10 |    10 |  100 |
|  5 |      2 |     5 |   10 |
|  6 |     15 |     4 |   60 |
+----+--------+-------+------+

Revise la salida y confirme que las áreas calculadas para las nuevas filas son correctas:

  • Para longitud 10 y ancho 10, el área es 100 (10 * 10).
  • Para longitud 2 y ancho 5, el área es 10 (2 * 5).
  • Para longitud 15 y ancho 4, el área es 60 (15 * 4).

Este paso refuerza su comprensión de cómo usar la función con datos variables y confirma su precisión.

Eliminar la Función y la Tabla

En este último paso, limpiará la base de datos eliminando la función calculate_rectangle_area y la tabla rectangles. Esta es una buena práctica para eliminar objetos que ya no necesita.

Continúe trabajando en la misma sesión del shell de MySQL y asegúrese de que todavía está utilizando la base de datos my_functions_db.

Primero, eliminemos la función calculate_rectangle_area. Ejecute el siguiente comando SQL:

DROP FUNCTION IF EXISTS calculate_rectangle_area;
  • DROP FUNCTION: Este comando se utiliza para eliminar una función.
  • IF EXISTS: Esta cláusula evita un error si la función no existe.

A continuación, eliminemos la tabla rectangles. Ejecute el siguiente comando SQL:

DROP TABLE IF EXISTS rectangles;
  • DROP TABLE: Este comando se utiliza para eliminar una tabla.
  • IF EXISTS: Esta cláusula evita un error si la tabla no existe.

Después de ejecutar estos comandos, tanto la función como la tabla se eliminarán de la base de datos my_functions_db.

Para verificar que la función ha sido eliminada, puede intentar listar las funciones nuevamente:

SHOW FUNCTION STATUS LIKE 'calculate_rectangle_area';

Este comando ahora debería devolver un conjunto de resultados vacío, lo que indica que la función ya no está.

Para verificar que la tabla ha sido eliminada, puede intentar seleccionar datos de ella:

SELECT * FROM rectangles;

Este comando debería devolver un error similar a ERROR 1146 (42S02): Table 'my_functions_db.rectangles' doesn't exist, lo que indica que la tabla ya no existe.

Ahora puede salir del shell de MySQL escribiendo exit y presionando Enter.

Ha creado, utilizado, probado y eliminado con éxito una función y una tabla personalizadas en MySQL.

Resumen

En este laboratorio, aprendió a crear una función en MySQL para encapsular lógica reutilizable. El proceso implicó conectarse al servidor MySQL, crear una base de datos (si era necesario) y luego definir una función con parámetros de entrada, un tipo de dato de retorno y la palabra clave DETERMINISTIC.

Específicamente, creó la función calculate_rectangle_area, que toma la longitud y el ancho de un rectángulo como entrada y devuelve su área. El cuerpo de la función incluyó la declaración de una variable local para almacenar el área calculada y el uso de la instrucción RETURN para devolver el resultado.

Luego aprendió a usar esta función en una consulta SELECT para realizar cálculos sobre datos almacenados en una tabla. También probó la función con datos de muestra adicionales para garantizar su precisión. Finalmente, aprendió a eliminar la función y la tabla para limpiar su entorno de base de datos.

Este laboratorio proporcionó una introducción práctica a la creación y el uso de funciones personalizadas en MySQL, una habilidad valiosa para encapsular lógica y mejorar la eficiencia de sus operaciones de base de datos.