Este documento presenta un caso práctico sobre una base de datos de deportes con tablas de personas, deportes, clubes y la tabla de relación que indica qué personas practican qué deportes en qué clubes. Se plantean consultas SQL para obtener información específica de estas tablas y luego actualizar y crear vistas sobre la base de datos.
3. a) Resuelva las consultas planteadas en SQL
3
1. Obtener el nombre de las personas que practican (simultáneamente) los deportes D01, D22 y
D10 (códigos).
SELECT pers.nom
FROM pers
,prac
WHERE pres.dni = prac.dni
AND prac.codd IN ('D01', 'D22', 'D10')
4. 4
2. Obtener el nombre de las personas que no practican deportes en Ausonia.
SELECT pers.nom
FROM pers
,prac
,club
WHERE pres.dni = prac.dni
AND club.codc=prac.codc
and club.nomc!='Ausonia'
5. 5
3. Obtener el DNI de las personas que practican deportes en Ausonia o bien practican en la UVT.
SELECT pers.dni
FROM pers
,prac
,club
WHERE pres.dni = prac.dni
AND club.codc=prac.codc
and (club.nomc='Ausonia' or club.nomc='UVT')
6. 6
4. Obtener el código de los deportes que son practicados solamente por hombres.
Modelo 1:
SELECT depo.codd
FROM pers
,prac
,depo
WHERE pers.dni = prac.dni
AND depo.codd=prac.codd
and pers.sexo='M'
group by depo.codd
Modelo 2:
SELECT DISTINCT depo.codd
FROM pers
,prac
,depo
WHERE pers.dni = prac.dni
AND depo.codd =
prac.codd
AND pers.sexo = 'M'
Modelo 3:
SELECT depo.codd
FROM depo
WHERE 1 = 1
AND EXISTS (SELECT 1
FROM pers
,prac
WHERE pers.dni =
prac.dni
AND prac.codd =
depo.codd
AND ers.sexo = 'M')
7. 7
5. Obtener nombre y dirección de las personas que viven en la misma zona que Juan Pérez, DNI
20.498.425.
SELECT pers.nombre
,pers.dir
FROM pers
WHERE pres.zona = (SELECT pres.zona
FROM pers
WHERE pres.dni = '20.498.425')
8. 8
6. Obtener el nombre de las personas mayores que Ana García (DNI: 18.498.425). 7. Obtener el
nombre de las personas que practican en clubes que están ubicados en la misma zona en la que
ellos viven.
SELECT pers.nombre
FROM pers
WHERE pers.edad > (SELECT pres.edad
FROM pers
WHERE pres.dni = '18.498.425') --Ana
9. 9
7. Obtener el nombre de las personas que practican en clubes que están ubicados en la misma
zona en la que ellos viven.
SELECT pers.nombre
FROM pers
,prac
,club
WHERE pers.dni = prac.dni
AND club.codc = prac.codc
AND EXISTS (SELECT 1
FROM pers
,prac
WHERE pers.dni = prac.dni
AND pers.zona = club.zona)
10. 10
8. Obtener el nombre de las personas junto al nombre del deporte que práctica. Se deben incluir
todas las personas registradas más allá que no estén practicando ningún deporte.
SELECT pers.nom,depo.nomd
FROM pers
,prac
,depo
WHERE pres.dni = prac.dni(+)
and depo.codd=prac.codd
11. 11
9. Obtener el nombre de los deportes practicados en todos los clubes.
SELECT distinct depo.nomd
FROM club
,prac
,depo
WHERE club.codc = prac.codc
AND depo.codd = prac.codd
12. 12
10. Obtener los clubes (todos sus datos) en los que se practican todos los deportes de balón
(clase).
SELECT club.*
FROM club
,prac
,depo
WHERE club.codc = prac.codc
AND depo.codd = prac.codd
and depo.clase='Balon'
13. 13
11. Obtener las personas (todos sus datos personales) que practican todos los deportes.
SELECT pers.*
FROM pers
,prac
WHERE pres.dni = prac.dni
14. 12. Obtener el nombre de las personas que practican todos los deportes que se practican en el
Banco Hispano.
SELECT pers.nom
,depo.nomd
FROM pers
,prac
,club
WHERE pers.dni = prac.dni
AND club.codc = prac.codc
AND club.nomc = 'Banco Hispano'
14
15. b) Sobre el esquema de base de dato planteado en el Caso 1 - Deportes
enuncie las consultas en SQL para actualizarla:
1. Inserte nuevas Personas (deportista) con los siguientes datos: < 14895399, Pérez Edgar, M, 35,
Hipólito Irigoyen 528, 4222935, Rawson > < 24835599, González Rosa, F, 50, Hipólito Irigoyen 528,
4229115, Rivadavia > < 34895399, Fernández Luis, M, 28, Hipólito Irigoyen 528, 4293538, Santa Lucia
> < 17895399, Ruiz Analía, F, 18, Hipólito Irigoyen 528, 4258912, Pósito >
INSERT INTO PERS (Dni, Nom, Sexo, Edad, Dir, Tel, Zona)
values (14895399, 'Pérez Edgar', 'M', 35, 'Hipólito Irigoyen 528', 4222935, 'Rawson'),
(24835599, 'González Rosa', ‘F', 50, 'Hipólito Irigoyen 528’, 4229115, 'Rivadavia'),
(34895399, 'Fernández Luis', 'M', 28, 'Hipólito Irigoyen 528', 4293538, ‘Santa Lucia'),
(17895399, 'Ruiz Analía', ‘F', 18, 'Hipólito Irigoyen 528', 4258912, ‘Pósito'),
COMMIT;
15
16. 16
2. Inserte el nuevo deporte con los siguientes datos: < d99 , Tenis , terrestre >
INSERT INTO DEPO (Codd, Nomd, Clase)
values (‘d99’, ‘Tenis', ‘terrestre‘)
COMMIT;
17. 17
3. Inserte el nuevo club con los siguientes datos: < c99, Universidad, 25 de Mayo, 4311425, cat,
Capital >
INSERT INTO CLUB (Codc, Nomc, Dir, Tel, Cat, Zona)
values (‘c99’, ‘Universidad', ’25 de Mayo‘, 4311425, ‘cat’. ‘Capital’)
COMMIT;
18. 18
4. Inserte la nueva tupla para practica con los siguientes datos: < 14895399, d99, c99 >
INSERT INTO PRAC (Dni, Codd, Codc)
values (148953399, ‘d99', ’c99’)
COMMIT;
19. 5. Actualice el teléfono del Club UVT por el número 4312548.
UPDATE club set
tel='654268‘
where nomc='UVT‘
COMMIT;
19
20. 6. Elimine el Deporte “Tenis”, controle si le permite realizar el borrado de la tupla.
DELETE FROM depo
WHERE nomd = 'Tenis‘
COMMIT;
20
21. c) Sobre el esquema de base de dato planteado en el Caso 1
- Deportes realice las siguientes vistas:
1. Una Vista llamada Atletas que tenga los siguientes atributos dni, nombre, sexo, edad.
CREATE view Atletas_v as
SELECT Dni,
Nombre,
Sexo,
Edad
FROM PERS
21
22. 2. Una Vista llamada Futbolistas que tenga los siguientes atributos dni, nombre,
edad y tel.
CREATE view Futbolistas_v as
SELECT Dni,
Nombre,
Edad,
Tel
FROM PERS
22