Clase de SQL
Clase de SQL
Contenido
EL MODELO ............................................................................................................................... 1
EL DDL........................................................................................................................................ 2
Cómo insertar datos de ejemplo en las tablas de obras sociales y pacientes: ......................... 5
Cómo agregar historias clínicas, estudios médicos y medicación a algunos pacientes: ........... 7
Consultas utilizando las cláusulas BETWEEN, LIKE y GROUP BY con HAVING en la tabla
pacientes: .................................................................................................................................. 8
Consultas de acción sobre la tabla pacientes para realizar inserciones, eliminaciones y
modificaciones de datos: .......................................................................................................... 9
Consultas utilizando la cláusula JOIN para combinar las tablas pacientes, obrasSociales e
historiasClinicas: ...................................................................................................................... 10
Consultas echas en clase ......................................................................................................... 11
PRACTICOS .............................................................................................................................. 13
EL MODELO
EL DDL
DDL
Aquí tienes el script para crear la base de datos en SQL Server con las tablas
mencionadas:
GO
USE NOMBRE_BASE_DE_DATOS;
GO
);
GO
dni VARCHAR(20),
nombre VARCHAR(50),
apellido VARCHAR(50),
direccion VARCHAR(100),
telefono VARCHAR(20),
email VARCHAR(50),
fechaNacimiento DATE,
obraSocialId INT,
);
GO
fecha DATE,
motivoVisita VARCHAR(100),
sintomas VARCHAR(200),
diagnostico VARCHAR(200),
tratamiento VARCHAR(200),
prescripciones VARCHAR(200),
pacienteId INT,
);
GO
nombre VARCHAR(50),
detalles VARCHAR(200),
archivo VARCHAR(100),
historiaClinicaId INT,
);
GO
droga VARCHAR(50),
indicaciones VARCHAR(200),
historiaClinicaId INT,
);
GO
Recuerda reemplazar "NOMBRE_BASE_DE_DATOS" por el nombre deseado para tu
base de datos. Este script creará las tablas "pacientes", "obrasSociales",
"historiasClinicas", "estudiosMedicos" y "medicaciones" con sus respectivos campos y
relaciones.
GO
INSERT INTO pacientes (id, dni, nombre, apellido, direccion, telefono, email,
fechaNacimiento, obraSocialId)
GO
Esto insertará tres filas de datos en la tabla "obrasSociales" y tres filas de datos en la
tabla "pacientes". Puedes ajustar los valores de ejemplo según tus necesidades y agregar
más filas si es necesario.
INSERT INTO pacientes (id, dni, nombre, apellido, direccion, telefono, email,
fechaNacimiento, obraSocialId)
VALUES
-- Pacientes del 1 al 10
-- Pacientes del 11 al 20
VALUES
(2, '2022-03-05', 'Fiebre y dolor de garganta', 'Fiebre alta y dolor al tragar', 'Amigdalitis',
'Antibióticos y reposo', 'Amoxicilina cada 12 horas', 2),
VALUES
VALUES
Consulta utilizando BETWEEN para obtener pacientes con fechas de nacimiento entre
dos rangos:
SELECT *
FROM pacientes
Esta consulta seleccionará todos los pacientes cuyas fechas de nacimiento se encuentren
entre el 1 de enero de 1980 y el 31 de diciembre de 1990.
Consulta utilizando LIKE para buscar pacientes cuyo nombre o apellido contenga cierto
patrón:
SELECT *
FROM pacientes
Consulta utilizando GROUP BY y HAVING para obtener pacientes con más de una
visita registrada:
FROM historiasClinicas
GROUP BY pacienteId
Esta consulta agrupará las historias clínicas por paciente y mostrará la cantidad total de
visitas para cada paciente. Luego, la cláusula HAVING filtrará los resultados para
mostrar solo los pacientes con más de una visita registrada.
INSERT INTO pacientes (id, dni, nombre, apellido, direccion, telefono, email,
fechaNacimiento, obraSocialId)
Esta consulta insertará un nuevo paciente con los datos proporcionados en la tabla
pacientes.
Eliminación de un paciente:
WHERE id = 3;
UPDATE pacientes
Esta consulta actualizará el número de teléfono y el correo electrónico del paciente con
id igual a 2 en la tabla pacientes.
FROM pacientes p
WHERE p.id = 1;
FROM pacientes p
Recuerda ajustar los nombres de las columnas y las tablas según tu estructura de base de
datos. Además, puedes modificar las condiciones del WHERE para filtrar los resultados
según tus necesidades.
Consultas echas en clase
--where fechaNacimiento<'1985-09-15'
--where obraSocialId=1
--group by dni,apellido,nombre
--where id=3
order by nombreOSocial
group by nombreOSocial
order by nombreOSocial
Aquí tienes diez consultas basadas en las consultas mas a modo de ejemplo:
Obtener todos los pacientes cuya fecha de nacimiento esté entre el 15 de septiembre de
1980 y el 15 de septiembre de 1988:
SELECT *
FROM pacientes
Obtener todos los pacientes cuya fecha de nacimiento sea anterior al 15 de septiembre
de 1985:
SELECT *
FROM pacientes
SELECT *
FROM pacientes
WHERE obraSocialId = 1;
FROM pacientes p
GROUP BY o.nombreOSocial;
FROM pacientes p
ORDER BY o.nombreOSocial;
FROM pacientes p
GROUP BY o.nombreOSocial
ORDER BY o.nombreOSocial;
FROM pacientes;
FROM pacientes
SELECT *
FROM pacientes
WHERE id = 3;
SELECT *
FROM obrasSociales;
Recuerda que puedes adaptar estas consultas según tus necesidades y los nombres
exactos de las tablas y los campos en tu base de datos.
Consulta 18: Obtener los pacientes que han tenido una visita con un diagnóstico y
tratamiento relacionados con diabetes.
SELECT p.*
FROM pacientes p
PRACTICOS
1. Obtener todos los pacientes cuyos apellidos empiecen con la letra "S".
2. Obtener el promedio de edades de los pacientes.
3. Obtener los pacientes cuyo teléfono de contacto contiene el número "555".
4. Obtener la cantidad de pacientes por año de nacimiento.
5. Obtener los pacientes que tienen más de una dirección registrada.
6. Obtener los pacientes que no tienen asignada una obra social.
7. Obtener los pacientes cuyo correo electrónico no contiene el dominio
"gmail.com".
8. Obtener los pacientes ordenados alfabéticamente por apellido y nombre.
9. Obtener el paciente más joven de la base de datos.
10. Obtener el paciente más antiguo de la base de datos.
11. Obtener los pacientes cuyo nombre y apellido contienen la misma letra.
12. Obtener los pacientes que nacieron en un mes específico (por ejemplo, enero).
13. Obtener los pacientes cuya dirección contiene la palabra "avenida".
14. Obtener los pacientes que tienen una fecha de nacimiento duplicada en la base
de datos.
15. Obtener los pacientes cuyo DNI termina en un número par.
16. Obtener los pacientes que tienen historias clínicas con diagnóstico
"Hipertensión".
17. Obtener los pacientes que tienen historias clínicas con más de 3 prescripciones.
18. Obtener los pacientes que han tenido visitas con motivo "Control de rutina".
19. Obtener los pacientes cuyo nombre o apellido comienza con la letra "A" y tienen
más de 30 años.
20. Obtener los pacientes que tienen la misma dirección de otro paciente en la base
de datos.
21. Obtener todos los pacientes cuyos apellidos empiecen con la letra "S".
22. Obtener el promedio de edades de los pacientes.
23. Obtener los pacientes cuyo teléfono de contacto contiene el número "555".
24. Obtener la cantidad de pacientes por año de nacimiento.
25. Obtener los pacientes que tienen más de una dirección registrada.
26. Obtener los pacientes que no tienen asignada una obra social.
27. Obtener los pacientes cuyo correo electrónico no contiene el dominio
"gmail.com".
28. Obtener los pacientes ordenados alfabéticamente por apellido y nombre.
29. Obtener el paciente más joven de la base de datos.
30. Obtener el paciente más antiguo de la base de datos.
31. Obtener los pacientes cuyo nombre y apellido contienen la misma letra.
32. Obtener los pacientes que nacieron en un mes específico (por ejemplo, enero).
33. Obtener los pacientes cuya dirección contiene la palabra "avenida".
34. Obtener los pacientes que tienen una fecha de nacimiento duplicada en la base
de datos.
35. Obtener los pacientes cuyo DNI termina en un número par.
36. Obtener los pacientes que tienen historias clínicas con diagnóstico
"Hipertensión".
37. Obtener los pacientes que tienen historias clínicas con más de 3 prescripciones.
38. Obtener los pacientes que han tenido visitas con motivo "Control de rutina".
39. Obtener los pacientes cuyo nombre o apellido comienza con la letra "A" y tienen
más de 30 años.
40. Obtener los pacientes que tienen la misma dirección de otro paciente en la base
de datos.