0% ont trouvé ce document utile (0 vote)
7 vues2 pages

Script IMC

Le document crée une base de données nommée 'salud_imc' et une table 'personas' pour stocker des informations sur les individus, y compris leur nom, date de naissance, poids et taille. Il inclut également une fonction pour calculer l'IMC, en évitant les erreurs de division par zéro, et effectue plusieurs tests pour afficher les données et les résultats de l'IMC. Enfin, il propose une classification simple des individus en fonction de leur IMC.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
7 vues2 pages

Script IMC

Le document crée une base de données nommée 'salud_imc' et une table 'personas' pour stocker des informations sur les individus, y compris leur nom, date de naissance, poids et taille. Il inclut également une fonction pour calculer l'IMC, en évitant les erreurs de division par zéro, et effectue plusieurs tests pour afficher les données et les résultats de l'IMC. Enfin, il propose une classification simple des individus en fonction de leur IMC.
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

/* =========================================================

1) Crear BBDD y seleccionarla


========================================================= */
DROP DATABASE IF EXISTS salud_imc;
CREATE DATABASE salud_imc
CHARACTER SET utf8mb4
COLLATE utf8mb4_spanish_ci;

USE salud_imc;

/* =========================================================
2) Crear tabla PERSONAS
(Añadimos PK para buenas prácticas)
========================================================= */
DROP TABLE IF EXISTS personas;

CREATE TABLE personas (


id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(20) NOT NULL,
fnac DATE,
peso DECIMAL(8,2),
altura DECIMAL(4,2)
) ENGINE=InnoDB;

/* =========================================================
3) Insertar datos de ejemplo
========================================================= */
INSERT INTO personas (nombre, fnac, peso, altura) VALUES
('ANA', '1997-11-23', 53, 1.52),
('LUIS', '2000-05-28', 80, 1.80),
('DAVID', '1997-06-07', 63, 1.75);

/* =========================================================
4) Crear función IMC
- Controlamos división por 0 o altura NULL
========================================================= */
DROP FUNCTION IF EXISTS imc;

DELIMITER //

CREATE FUNCTION imc(p_peso DECIMAL(8,2), p_altura DECIMAL(4,2))


RETURNS DECIMAL(5,2)
DETERMINISTIC
BEGIN
DECLARE v_imc DECIMAL(5,2);

-- Validación básica para evitar errores


IF p_altura IS NULL OR p_altura <= 0 OR p_peso IS NULL OR p_peso <= 0 THEN
RETURN NULL;
END IF;

SET v_imc = p_peso / (p_altura * p_altura);

RETURN v_imc;
END//

DELIMITER ;
/* =========================================================
5) Pruebas
========================================================= */

-- Prueba 1: Ver datos


SELECT * FROM personas;

-- Prueba 2: Probar la función con valores directos


SELECT imc(53, 1.52) AS imc_ana;
SELECT imc(80, 1.80) AS imc_luis;
SELECT imc(63, 1.75) AS imc_david;

-- Prueba 3: Calcular IMC para todas las personas en una consulta


SELECT
nombre,
fnac,
peso,
altura,
imc(peso, altura) AS imc
FROM personas;

-- Prueba 4 (opcional): Clasificación simple por rangos de IMC


SELECT
nombre,
imc(peso, altura) AS imc,
CASE
WHEN imc(peso, altura) < 18.5 THEN 'Bajo peso'
WHEN imc(peso, altura) < 25 THEN 'Normopeso'
WHEN imc(peso, altura) < 30 THEN 'Sobrepeso'
ELSE 'Obesidad'
END AS categoria
FROM personas;

Vous aimerez peut-être aussi