19 de marzo de 2024
ESCOM
Reporte de la
Práctica 1
Leonardo Regalado Zúñiga
Iván Navarro Bravo
Materia:
Bases de Datos
Prof.
Erika Hernández Rubio
Introducción
MySQL es una herramienta esencial para la ges�ón y manipulación de datos de manera
estructurada. Su importancia radica en la capacidad de almacenar, recuperar y manipular grandes
volúmenes de información de manera eficiente, lo que es crucial en diversas aplicaciones y
entornos empresariales. El marco teórico para comprender y u�lizar MySQL abarca conceptos
fundamentales de bases de datos relacionales, incluyendo la normalización de datos, el diseño de
esquemas de bases de datos En�dad-Relación, y la implementación de relaciones entre tablas
mediante llaves primarias y foráneas.
Para desarrollar la prác�ca 1, fue necesario aprender varios aspectos técnicos de MySQL. Aprender
la sintaxis para la creación y ges�ón de bases de datos, tablas, y la inserción de datos, principales
cosas con las que trabajamos estas semanas en clase. Asimismo, se exploraron las consultas para
filtrar, ordenar, y realizar cálculos agregados sobre los datos, habilidades esenciales para extraer
información valiosa y realizar análisis. La prác�ca implicó también entender cómo implementar
restricciones de integridad y cómo u�lizar índices para op�mizar las consultas, todo dentro del
marco de garan�zar la coherencia y la eficiencia en el acceso a los datos.
Aprendimos que, aunque la sintaxis de MySQL y los conceptos de bases de datos pueden parecer
complejos al principio, su estructura lógica facilita la adaptación a quienes ya poseen fundamentos
de programación y conocimientos de inglés.
Código (Documentado)
-- Creación de la base de datos y selección para uso
-- Este bloque crea la base de datos 'practica3' y selecciona dicha
base de datos para realizar operaciones en ella.
create database practica3;
use practica3;
-- Estructura de la tabla `causahosp`
-- Define la tabla `causahosp` para almacenar las causas de
hospitalización. Incluye un identificador único para cada causa, el
tratamiento recomendado, y observaciones generales.
DROP TABLE IF EXISTS `causahosp`;
CREATE TABLE `causahosp` (
`idCausaHosp` int(10) unsigned NOT NULL,
`tratamiento` varchar(300) NOT NULL,
`observaciones` varchar(300) NOT NULL,
PRIMARY KEY (`idCausaHosp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- Inserción de datos en la tabla causahosp
-- Inserta registros en la tabla causahosp, cada uno representando una
causa distinta de hospitalización con su respectivo tratamiento y
observaciones
INSERT INTO `causahosp` VALUES
(1,'Cirugia','Ninguna'),(2,'Accidente','Fallecio'),(3,'Infarto','Atendido
'),...;
-- Estructura de la tabla cuarto
-- Define la tabla cuarto para almacenar información sobre los cuartos
del hospital, incluyendo un identificador único del cuarto y el estado
del cuarto referenciado desde otra tabla
DROP TABLE IF EXISTS `cuarto`;
CREATE TABLE `cuarto` (
`noCuarto` int(10) unsigned NOT NULL,
`idedoCuarto` varchar(5) NOT NULL,
PRIMARY KEY (`noCuarto`),
KEY `FK_cuarto_1` (`idedoCuarto`),
CONSTRAINT `FK_cuarto_1` FOREIGN KEY (`idedoCuarto`) REFERENCES
`edocuarto` (`idedoCuarto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- Inserción de datos en la tabla `cuarto`
-- Añade registros a la tabla `cuarto`, especificando el número de cuarto
y su estado correspondiente
INSERT INTO `cuarto` VALUES (107,'A'),(108,'A'),(119,'A'),...;
-- Estructura de la tabla `edocuarto`
-- Crea la tabla `edocuarto` que define los posibles estados de un
cuarto, como ocupado, limpio, en mantenimiento, etc
DROP TABLE IF EXISTS `edocuarto`;
CREATE TABLE `edocuarto` (
`idedoCuarto` varchar(5) NOT NULL,
`edoCuarto` varchar(45) NOT NULL,
PRIMARY KEY (`idedoCuarto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- Inserta los distintos estados en que puede encontrarse un cuarto
dentro del hospital
INSERT INTO `edocuarto` VALUES
('A','Ocupado'),('B','Limpio'),('C','Sucio'),...;
-- Estructura de la tabla `especialidad`
-- Esta tabla almacena las distintas especialidades médicas disponibles
en el hospital.
-- Cada especialidad está identificada por un código único y una
descripción.
DROP TABLE IF EXISTS `especialidad`;
CREATE TABLE `especialidad` (
`idEsp` varchar(5) NOT NULL,
`descEsp` varchar(45) NOT NULL,
PRIMARY KEY (`idEsp`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- Inserción de datos en la tabla `medico`
-- Introduce detalles de los médicos, asignándoles una especialidad
médica a través de la clave foránea que referencia a la tabla
`especialidad`.
INSERT INTO `medico` VALUES (1210,'ISLAS LOPEZ DORIBEL','Av. Universidad
210','GN',7110258),...;
-- Estructura de la tabla `paciente`
-- Almacena los detalles de los pacientes, como su CURP único, nombre,
edad, dirección y teléfono.
DROP TABLE IF EXISTS `paciente`;
CREATE TABLE `paciente` (
`curp` varchar(15) NOT NULL,
`nombre` varchar(50) NOT NULL,
`edad` int(10) unsigned NOT NULL,
`dir
varchar(250) NOT NULL, tel int(10) unsigned NOT NULL, PRIMARY KEY (curp`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- Inserción de datos en la tabla paciente
-- Inserta la información básica de los pacientes, incluyendo
identificación personal, contacto y detalles demográficos. Esta
información es fundamental para el seguimiento clínico y administrativo
dentro del hospital.
INSERT INTO paciente VALUES ('ABHA911215','ABAD HERNANDEZ
ALDO',19,'conocida',55555555), ('AGRK800719','AGUILAR RUIZ
KEYLA',23,'Campo Deportivo 618',7198835),...;
-- Consultas de selección y manejo de datos
-- A continuación, se presentan diversas consultas SQL que demuestran
cómo interactuar con la información almacenada en las tablas previamente
definidas. Estas consultas cubren operaciones básicas como selección,
filtrado y ordenamiento de datos.
-- Muestra todas las tablas disponibles en la base de datos 'practica3'.
show tables;
-- Selecciona todos los registros de la tabla 'paciente'.
select * from paciente;
-- Ordena y selecciona los nombres y edades de los pacientes, de menor a
mayor edad.
select nombre, edad from paciente order by edad;
-- Ordena y selecciona los nombres y CURPs de los pacientes, en orden
descendente por CURP.
select nombre, curp from paciente order by curp desc;
-- Selecciona todos los datos de un paciente específico mediante su CURP.
select * from paciente where curp="MALD770810";
-- Filtra pacientes por una edad específica, en este caso 26 años.
select * from paciente where edad = 26;
-- Consultas más complejas que involucran funciones de agregación y
condiciones más detalladas.
-- Cuenta el número de registros de causas de hospitalización en la tabla
'historial'.
select COUNT(idCausaHosp) AS "Registrocausa2" from historial;
-- Calcula el promedio de edad de los pacientes.
select AVG(edad) AS "PROMEDIO_EDAD" from paciente;
-- Encuentra la fecha de ingreso más temprana y la más reciente en el
historial.
select MIN(fechaIngreso) AS "FECHA_MINIMA", MAX(fechaIngreso) AS
"FECHA_FINAL" from historial;
Ejemplos adicionales de comandos vistos en la prác�ca
Update set
UPDATE estudiantes SET email = '[email protected]' WHERE id_estudiante = 1;
UPDATE UnidadesAprendizaje SET créditos = créditos + 1 WHERE idCurso = 5;
Select con condicional
SELECT * FROM estudiantes WHERE año_ingreso = 2023;
SELECT * FROM cursos WHERE creditos > 4;
Alter table add colum
ALTER TABLE profesores ADD COLUMN telefono VARCHAR(20);
ALTER TABLE profesores ADD COLUMN es_tutor BOOLEAN;
Alter table modify
ALTER TABLE estudiantes MODIFY COLUMN fechaNacimiento;
ALTER TABLE profesores MODIFY COLUMN teléfono VARCHAR(25);
Select con condicional "like"
SELECT * FROM situación WHERE nombre LIKE '%Regular%';
SELECT * FROM estudiantes WHERE apellido LIKE '%H;
Select con AVG( función para calcular el promedio)
SELECT AVG(YEAR(DATE()) - YEAR(fechaNacimiento)) AS promedioEdad FROM estudiantes;
SELECT AVG(calificacion) AS promedio_matema�cas FROM calificaciones calificaciones.id_curso =
materias.id_curso WHERE materias.departamento = 'Matemá�cas';
Select con condicional order by
SELECT * FROM profesores ORDER BY fechaContratacion DESC;
SELECT * FROM estudiantes ORDER BY apellido ASC;
Conclusiones
Navarro Bravo Iván: En estas semanas en las que he estado aprendiendo MySQL, me ha
demostrado ser más sencillo de lo que siempre pensé, ya que este se destaca por la accesibilidad
de su sintaxis, especialmente para quienes �enen dominio del inglés. Esta caracterís�ca facilita
significa�vamente la comprensión y aplicación de conceptos fundamentales de bases de datos. La
prác�ca 1, en este contexto, ha servido no solo como una oportunidad para aplicar lo visto en clase
y técnicas vistas en laboratorio, sino también para reforzar temas y comandos que previamente no
comprendía en su totalidad.
Regalado Zúñiga Leonardo:
Las modificaciones que hicimos en la estructura de las tablas muestran cómo las bases de datos
están en constante evolución para adaptarse a las necesidades cambiantes del negocio. Agregar la
columna "crédito" a la tabla de proveedores es un ejemplo claro de cómo ajustamos la base de
datos para capturar información financiera importante que podría ser ú�l en nuestras operaciones
diarias.
Y finalmente, ordenar los resultados de nuestras consultas hace que todo sea más fácil de
entender y de manejar. Por ejemplo, al ordenar a los socios por nombre, podemos encontrar la
información que necesitamos mucho más rápido y de manera más organizada.
Bibliogra�a
[1] W3schools, "SQL Tutorial," accedida el 15 de marzo de 2024. [En línea]. Disponible en:
htps://www.w3schools.com/sql/sql_join.asp