Diseño de Bases de Datos
Clase 4
Curso 2015
Prof. Luciano Marrero
Pablo Thomas
Rodolfo Bertone
2 Agenda
Lenguaje de
Consultas •Ejemplos
Estructurado
(SQL)
DBD - CLASE 6_2
3 SQL DML
Ejercicios para resolver
Dadas las siguientes tablas
Cliente ( id_cliente, nombre_cliente, renta_anual, tipo_cliente)
Embarque ( embarque_#, id_cliente, peso, camión_#, destino, fecha)
Camión (camión_#, nombre_chofer)
Ciudad ( nombre_ciudad, población)
DBD - CLASE 6_2
4 SQL DML
1. Cuál es el nombre del cliente 433?
2. Cuál es la ciudad destino del embarque 3244?
3. Cuales son los números de los camiones que han llevado paquetes (embarques) por encima de 100 kg?
4. Presente todos los datos de los embarques de más de 20 kg?
5. Cree una lista por orden alfabético de los clientes con renta anual de más de 10 millones?
6. Cual es el Id del cliente José García?
7. Mostrar los nombres de los clientes que han enviado embarques a las ciudades cuyo nombre empieza con
C.
8. Mostrar los nombres de los clientes que han enviado embarques a las ciudades cuyo nombre termina con
City.
9. Mostrar los nombres de los clientes que tienen una D como tercera letra del nombre.
10. Mostrar los nombres de los clientes que sean minoristas
DBD - CLASE 6_2
5 SQL DML
11. Cómo se llaman los clientes que han enviado paquetes a Bariloche?
12. A cuales destinos han hecho envíos las compañías con renta anual menor que 1 millón?
13. Cuales son los nombres y las poblaciones de las ciudades que han recibido embarques que pesen más de 100
kg?
14. Cuales son los clientes que tienen más de 5 millones de renta anual y que han enviado embarques de menos de
1 kg?
15. Quienes son los clientes que tienen más de 5 millones de renta anual y que han enviado embarques de menos
de 1kg. O han enviado embarques a Villa La Angostura?
16. Quienes son los choferes que han conducido embarques de clientes que tienen renta anual mayor de 20
millones a ciudades con más de 1 millón de habitantes?
17. Indique los choferes que han transportado embarques a cada una de las ciudades.
18. Indique las ciudades que han recibido embarques de clientes que tienen más de 15 millones de renta anual.
19. Indique el nombre y la renta anual de los clientes que han enviado embarques que pesan más de 100 kg.
20. Indique los clientes que han tenido embarques transportados en cada camión.
DBD - CLASE 6_2
6 SQL DML
21. Cual es el peso promedio de los embarques?
22. Cual es el peso promedio de los embarques que van a Neuquén?
23. Presente una lista de los clientes para los que todos sus embarques han pesado más de 25 kg.
24. Cuales ciudades de la BD tienen la menor y la mayor población?
25. Agregue el camión 95 con el chofer García a la BD
26. Borre de la BD todas las ciudades con población de menos de 5000 habitantes. Debe sacar,
además los embarques que haya en dicha ciudad.
27. Borre de la BD todas las ciudades con población de menos de 5000 habitantes que no
posean embarques enviados.
28. Convierta el peso de cada envío a libras, para ello se sabe que una libra son 2.2 kg.
(aproximadamente).
DBD - CLASE 6_2
7 SQL DML
29. Indique las ciudades que han recibido embarques de todos los clientes
30. Cuantos embarques han sido enviados pro el cliente 433?
31. Para cada cliente ¿cuál es el peso medio de los paquetes enviados por él?
32. Para cada ciudad ¿cuál es el peso máximo de un paquete que haya sido enviado a dicha
ciudad?
33. Para cada ciudad con población por encima de un millón de habitantes ¿cuál es el peso
menor de un paquete enviado a dicha ciudad?
34. Para cada ciudad que haya recibido al menos diez paquetes, ¿cuál es el peso medio de los
paquetes enviados a dicha ciudad?
DBD - CLASE 6_2
8 Soluciones
1 SELECT nombre 2 SELECT destino
FROM clientes FROM embarque
WHERE id_cliente = 433 WHERE embarque_# = 3244
3 SELECT camion_#
4 SELECT *
FROM embarque
FROM embarque
WHERE peso > 100
WHERE peso > 20
5 SELECT nombre
FROM clientes 6 SELECT id_cliente
WHERE rentaanual> 10000000 FROM clientes
ORDER BY nombre WHERE nombre = “Jose Garcia”
7 SELECT c.nombre
FROM clientes c INNER JOIN embarque e ON (c.id_cliente = e.id_cliente )
WHERE destino LIKE “C%”
DBD - CLASE 6_2
9 Soluciones
8 SELECT c.nombre
FROM clientes c INNER JOIN embarque e ON (c.id_cliente = e.id_cliente )
WHERE e.destino LIKE “%City”
9 SELECT nombre
10 SELECT nombre
FROM cliente
FROM clientes
WHERE nombre LIKE “__D%”
WHERE tipo_cliente > “minorista”
11 SELECT c.nombre
FROM clientes c INNER JOIN embarque e ON (c.id_cliente = e.id_cliente )
WHERE e.destino = ”bariloche”
12 SELECT e. destino
FROM clientes c INNER JOIN embarque e ON (c.id_cliente = e.id_cliente )
WHERE rentaanual > 1000000 AND tipo_cliente =“compañía”
DBD - CLASE 6_2
10 Soluciones
13 SELECT DISTINCT ( l.nombre_ciudad. l.poblacion )
FROM localidades l INNER JOIN embarque e ON (e.destino= l.nombre_ciudad )
WHERE e.peso > 100
14 SELECT c.nombre
FROM clientes c INNER JOIN embarque e ON (c.id_cliente = e.id_cliente )
WHERE c.renta_anual > 5000000 AND e.peso < 1
15 SELECT c.nombre
FROM clientes c INNER JOIN embarque e ON (c.id_cliente = e.id_cliente )
WHERE ( c.renta_anual > 5000000 AND e.peso < 1) OR e.destino =“VLA”
16 SELECT ca.nombre_chofer
FROM clientes c INNER JOIN embarque e ON (c.id_cliente = e.id_cliente )
INNER JOIN camiones ca ON (ca.camion_# = e.camion_# )
INNER JOIN localidades l ON (l.nombre_ciudad = e.destino)
WHERE DBD
rentaanual
- CLASE 6_2
> 20000000 AND l.poblacion > 1000000
Soluciones
17 SELECT ca.nombre_chofer
11 FROM camiones ca
WHERE NOT EXIST (SELECT *
FROM localidades l
WHERE NOT EXIST ( SELECT *
FROM embarques e
WHERE e.destino = l.nombre_localidad AND
e.camion_# = ca.camion_#
18 SELECT e.destino
FROM clientes c INNER JOIN embarque e ON (c.id_cliente = e.id_cliente )
WHERE rentaanual > 15000000
19 SELECT c.nombre_cliente, c.renta_anual
FROM clientes c INNER JOIN embarque e ON (c.id_cliente = e.id_cliente )
WHERE e.peso > 100
19 SELECT c.nombre_cliente, c.renta_anual
FROM clientes c
WHERE c.id_cliente IN (SELECT e.id_cliente
FROM embarques e
WHERE e.peso > 100 )
DBD - CLASE 6_2
Soluciones
20 SELECT c.nombre_chofer
12 FROM clientes c
WHERE NOT EXIST (SELECT *
FROM camion ca
WHERE NOT EXIST ( SELECT *
FROM embarques e
WHERE e.id_cliente = c.idcliente AND
e.camion_# = ca.camion_# )
21 SELECT AVG( peso )e.destino
FROM embarque 22 SELECT AVG( peso )e.destino
FROM embarque
WHERE destino = “NQN”
23 SELECT c.nombre_cliente
FROM clientes c
WHERE NOT EXIST ( SELECT *
FROM embarques e
WHERE e.peso < 25 AND e.id_cliente = c.id_Cliente
DBD - CLASE 6_2
Soluciones
13
24 SELECT nombre_ciudad
FROM localidades
where poblacion = (SELECT MIN( poblacion)
FROM localidades )
SELECT nombre_ciudad
FROM localidades
where poblacion = (SELECT MAX( poblacion)
FROM localidades )
25 INSERT INTO camion ( “Garcia” )
26 DELETE FROM embarques
WHERE destino IN ( SELECT nombre_ciudad
FROM localidades
WHERE poblacion < 5000 )
DELETE FROM localidades
WHERE poblacion < 5000
DBD - CLASE 6_2
Soluciones
14
27 DELETE FROM localidades l
WHERE l. poblacion < 5000 AND NOT EXIST ( SELECT *
FROM embarques e
WHERE e.destino = l.nombre_ciudad
28 UPDATE embarques
SET peso = peso / 2.2
29 SELECT l.nombre_ciudad
FROM localidades l
WHERE NOT EXIST (SELECT *
FROM clientes c
WHERE NOT EXIST ( SELECT *
FROM embarques e
WHERE e.destino = l.nombre_localidad AND
e.id_cliente = c.id_cliente )
DBD - CLASE 6_2
Soluciones
15
30 SELECT COUNT (* )
FROM embarques
WHERE id_cliente = 433
31 SELECT id_cliente, AVG (peso )
FROM embarques
GROUP BY id_cliente
31 CREATE VIEW cte
SELECT id_cliente, AVG (peso ) AS promedio
FROM embarques
GROUP BY id_cliente
SELECT c.nombre, ct.promedio
FROM clientes c INNER JOIN cte ct ON( ct.id_cliente = c.id_cliente
DBD - CLASE 6_2
Soluciones
16
32 SELECT destino, MAX (peso)
FROM embarques
GROUP BY destino
33 SELECT e.destino, MIN (e.peso)
FROM embarques e INNER JOIN localidades l ON (l.nombre_ciudad = e.destino )
WHERE l.poblacion > 1000000
GROUP BY destino
34 SELECT destino, AVG (peso)
FROM embarques
GROUP BY destino
HAVING COUNT( * ) > 10
DBD - CLASE 6_2