-- 🟩 Tabla 1: Pacientes
CREATE TABLE Pacientes (
ID_Paciente INT PRIMARY KEY,
Nombre VARCHAR(50),
Apellido VARCHAR(50),
Sexo VARCHAR(10),
Fecha_Nacimiento DATE,
CURP VARCHAR(18),
Telefono VARCHAR(15),
Correo VARCHAR(100),
Direccion VARCHAR(100)
);
INSERT INTO Pacientes VALUES
(1, 'Juan', 'Pérez', 'Masculino', '1985-05-10', 'PEPJ850510HDFRZN09', '8331234567',
'juanp@[Link]', 'Col. Centro'),
(2, 'Ana', 'Ramírez', 'Femenino', '1992-04-25', 'RAMA920425MDFTRN02', '8332223344',
'ana.r@[Link]', 'Col. Aurora'),
(3, 'Luis', 'Torres', 'Masculino', '1978-08-19', 'TOLU780819HDFRNS07',
'8339992211', 'luistorres@[Link]', 'Col. Morelos'),
(4, 'Marta', 'Gómez', 'Femenino', '1983-09-14', 'GOMM830914MDFRST03', '8338877112',
'[Link]@[Link]', 'Col. Obrera'),
(5, 'Carlos', 'Vega', 'Masculino', '2000-03-02', 'VEGC000302HDFTTR04',
'8333344556', 'carveg@[Link]', 'Col. Solidaridad'),
(6, 'Lucía', 'Reyes', 'Femenino', '1995-06-30', 'REYL950630MDFRNS05', '8334447788',
'luciareyes@[Link]', 'Col. Roma'),
(7, 'Jorge', 'Hernández', 'Masculino', '1987-11-22', 'HEJJ871122HDFTRD03',
'8336678990', 'jorgeh@[Link]', 'Col. Jardín'),
(8, 'Laura', 'Castro', 'Femenino', '1975-02-12', 'CALU750212MDFRRR07',
'8331231122', 'lcastro@[Link]', 'Col. Reforma'),
(9, 'Elena', 'López', 'Femenino', '1999-01-05', 'LOEL990105MDFTRN08', '8333212233',
'[Link]@[Link]', 'Col. Del Valle'),
(10, 'Marco', 'Ortiz', 'Masculino', '1980-12-18', 'ORIM801218HDFTZN01',
'8339988776', '[Link]@[Link]', 'Col. Altamira'),
(11, 'Valeria', 'Núñez', 'Femenino', '1991-03-15', 'NUVA910315MDFTRD02',
'8335556677', '[Link]@[Link]', 'Col. Universidad'),
(12, 'Oscar', 'Domínguez', 'Masculino', '1988-10-28', 'DOOS881028HDFTRN03',
'8338884443', 'oscar.d@[Link]', 'Col. Petrolera'),
(13, 'Fernanda', 'Silva', 'Femenino', '1997-07-08', 'SIFE970708MDFRRR06',
'8331112223', '[Link]@[Link]', 'Col. Moderna'),
(14, 'Diana', 'Ruiz', 'Femenino', '2001-09-09', 'RUDI010909MDFRZT05', '8332121212',
'dianar@[Link]', 'Col. Loma Alta'),
(15, 'Tomás', 'Salinas', 'Masculino', '1993-11-11', 'SATO931111HDFTRR04',
'8334343434', 'tomas.s@[Link]', 'Col. México');
-- Consultas
--SELECT * FROM Pacientes;
--SELECT * FROM Pacientes WHERE Sexo = 'Femenino';
--SELECT * FROM Pacientes ORDER BY Fecha_Nacimiento;
--SELECT * FROM Pacientes WHERE Nombre LIKE 'Ana';
--SELECT COUNT(*) AS Total_Pacientes FROM Pacientes;
-----------------------------------------------------------------------------------
-----------------
-- 🟦 Tabla 2: Doctores
CREATE TABLE Doctores (
ID_Doctor INT PRIMARY KEY,
Nombre VARCHAR(50),
Apellido VARCHAR(50),
Especialidad VARCHAR(50),
Telefono VARCHAR(15),
Correo VARCHAR(100),
Turno VARCHAR(20)
);
INSERT INTO Doctores VALUES
(1, 'Roberto', 'Medina', 'Cardiología', '8334455667', 'rmedina@[Link]',
'Matutino'),
(2, 'Patricia', 'Suárez', 'Pediatría', '8337788990', 'psuarez@[Link]',
'Vespertino'),
(3, 'Daniel', 'Lara', 'Neurología', '8339988776', 'dlara@[Link]', 'Matutino'),
(4, 'Sofía', 'Herrera', 'Ginecología', '8333344552', 'sherrera@[Link]',
'Nocturno'),
(5, 'Javier', 'Salas', 'Urgencias', '8335566778', 'jsalas@[Link]', 'Nocturno'),
(6, 'Claudia', 'Ortiz', 'Traumatología', '8339988111', 'cortiz@[Link]',
'Vespertino'),
(7, 'Andrés', 'García', 'Dermatología', '8331122334', 'agarcia@[Link]',
'Matutino'),
(8, 'Erika', 'Morales', 'Psiquiatría', '8332233445', 'emorales@[Link]',
'Vespertino'),
(9, 'Mario', 'Santos', 'Oncología', '8335566222', 'msantos@[Link]', 'Matutino'),
(10, 'Beatriz', 'López', 'Medicina Interna', '8336677889', 'blopez@[Link]',
'Nocturno'),
(11, 'Luis', 'Fuentes', 'Pediatría', '8338899000', 'lfuentes@[Link]',
'Matutino'),
(12, 'Gabriela', 'Castillo', 'Rehabilitación', '8333344551', 'gcastillo@[Link]',
'Vespertino'),
(13, 'Héctor', 'Cruz', 'Neumología', '8336655443', 'hcruz@[Link]', 'Nocturno'),
(14, 'Laura', 'Meza', 'Geriatría', '8335566888', 'lmeza@[Link]', 'Vespertino'),
(15, 'Fernando', 'Ríos', 'Cirugía', '8337788555', 'frios@[Link]', 'Matutino');
-- Consultas
--SELECT * FROM Doctores;
--SELECT * FROM Doctores WHERE Especialidad = 'Pediatría';
--SELECT * FROM Doctores WHERE Turno = 'Vespertino';
--SELECT * FROM Doctores ORDER BY Apellido;
--SELECT Especialidad, COUNT(*) AS Total FROM Doctores GROUP BY Especialidad;
-----------------------------------------------------------------------------------
-----------------
-- 🟨 Tabla 3: Citas
CREATE TABLE Citas (
ID_Cita INT PRIMARY KEY,
Fecha DATE,
Hora TIME,
ID_Paciente INT,
ID_Doctor INT,
Motivo VARCHAR(100),
FOREIGN KEY (ID_Paciente) REFERENCES Pacientes(ID_Paciente),
FOREIGN KEY (ID_Doctor) REFERENCES Doctores(ID_Doctor)
);
INSERT INTO Citas VALUES
(1, '2025-04-01', '09:00', 1, 2, 'Chequeo pediátrico'),
(2, '2025-04-01', '10:30', 2, 1, 'Dolor de pecho'),
(3, '2025-04-02', '12:00', 3, 3, 'Dolor de cabeza'),
(4, '2025-04-02', '13:30', 4, 4, 'Consulta ginecológica'),
(5, '2025-04-03', '08:00', 5, 5, 'Urgencia respiratoria'),
(6, '2025-04-03', '09:30', 6, 6, 'Lesión deportiva'),
(7, '2025-04-04', '10:00', 7, 7, 'Revisión de piel'),
(8, '2025-04-04', '11:00', 8, 8, 'Evaluación psicológica'),
(9, '2025-04-05', '12:30', 9, 9, 'Estudio oncológico'),
(10, '2025-04-05', '14:00', 10, 10, 'Dolor abdominal'),
(11, '2025-04-06', '15:00', 11, 11, 'Control pediátrico'),
(12, '2025-04-06', '16:00', 12, 12, 'Terapia de rehabilitación'),
(13, '2025-04-07', '17:00', 13, 13, 'Dificultad respiratoria'),
(14, '2025-04-07', '18:00', 14, 14, 'Chequeo geriátrico'),
(15, '2025-04-08', '08:30', 15, 15, 'Consulta preoperatoria');
-- Consultas
--SELECT * FROM Citas;
--SELECT * FROM Citas WHERE Fecha = '2025-04-03';
--SELECT * FROM Citas WHERE ID_Paciente = 5;
--SELECT * FROM Citas WHERE ID_Doctor = 2;
--SELECT COUNT(*) AS Total_Citas FROM Citas;
-----------------------------------------------------------------------------------
-----------------
--🟧 Tabla 4: Historial_Medico
CREATE TABLE Historial_Medico (
ID_Historial INT PRIMARY KEY,
ID_Paciente INT,
Diagnostico VARCHAR(100),
Tratamiento VARCHAR(100),
Fecha_Registro DATE,
FOREIGN KEY (ID_Paciente) REFERENCES Pacientes(ID_Paciente)
);
INSERT INTO Historial_Medico VALUES
(1, 1, 'Infección respiratoria', 'Antibióticos por 7 días', '2025-03-01'),
(2, 2, 'Arritmia', 'Electrocardiograma y seguimiento', '2025-03-05'),
(3, 3, 'Migraña', 'Analgésicos y control', '2025-03-10'),
(4, 4, 'Quiste ovárico', 'Ultrasonido y cirugía programada', '2025-03-12'),
(5, 5, 'Asma', 'Inhaladores diarios', '2025-03-15'),
(6, 6, 'Esguince', 'Reposo y fisioterapia', '2025-03-20'),
(7, 7, 'Acné severo', 'Tratamiento dermatológico', '2025-03-22'),
(8, 8, 'Depresión leve', 'Terapia psicológica', '2025-03-25'),
(9, 9, 'Linfoma en estudio', 'Biopsia', '2025-03-28'),
(10, 10, 'Gastritis', 'Omeprazol y dieta', '2025-03-30'),
(11, 11, 'Tos persistente', 'Nebulizaciones', '2025-04-01'),
(12, 12, 'Lesión en pierna', 'Terapia física', '2025-04-02'),
(13, 13, 'Bronquitis', 'Antibióticos y reposo', '2025-04-04'),
(14, 14, 'Presión alta', 'Control médico', '2025-04-05'),
(15, 15, 'Apendicitis', 'Cirugía de urgencia', '2025-04-06');
-- Consultas
--SELECT * FROM Historial_Medico;
--SELECT * FROM Historial_Medico WHERE ID_Paciente = 1;
--SELECT * FROM Historial_Medico WHERE Diagnostico LIKE 'asma';
--SELECT * FROM Historial_Medico ORDER BY Fecha_Registro DESC;
--SELECT COUNT(*) AS Total_Historiales FROM Historial_Medico;
-----------------------------------------------------------------------------------
-----------------
-- 🧩 Consultas Multitabla
-- 1. Mostrar nombre del paciente, nombre del doctor y motivo de la cita
--SELECT [Link] AS Nombre_Paciente,[Link] AS Nombre_Doctor,[Link] Citas
CJOIN Pacientes P ON C.ID_Paciente = P.ID_PacienteJOIN Doctores D ON C.ID_Doctor =
D.ID_Doctor;
-- 2. Mostrar todos los historiales médicos con nombre y apellido del paciente
--SELECT [Link], [Link], [Link], [Link], H.Fecha_RegistroFROM
Historial_Medico HJOIN Pacientes P ON H.ID_Paciente = P.ID_Paciente;
-- 3. Contar cuántas citas tiene cada doctor
--SELECT [Link], [Link], COUNT(C.ID_Cita) AS Total_CitasFROM Doctores DJOIN
Citas C ON D.ID_Doctor = C.ID_DoctorGROUP BY [Link], [Link];
-- 4. Mostrar pacientes con historial médico y al menos una cita registrada
--SELECT DISTINCT P.ID_Paciente, [Link], [Link] Pacientes PJOIN
Historial_Medico H ON P.ID_Paciente = H.ID_PacienteJOIN Citas C ON P.ID_Paciente =
C.ID_Paciente;
-- 5. Listar las citas con fecha, hora, nombre del paciente y especialidad del
doctor
--SELECT [Link], [Link], [Link] AS Paciente, [Link] FROM Citas C JOIN
Pacientes P ON C.ID_Paciente = P.ID_Paciente JOIN Doctores D ON C.ID_Doctor =
D.ID_Doctor;
-----------------------------------------------------------------------------------
-----------------