QA E16y17 - Base de Datos - Sistema MySQL IV
QA E16y17 - Base de Datos - Sistema MySQL IV
Encuentro 16y17/20
Base de datos
Sistema MySQL IV
MATERIAL DE LECTURA
Consultas Multitablas
Como mencionamos previamente, trabajamos con base de datos
relacionales. Esto significa que tenemos tablas relacionadas entre sí. Y
dentro de esas tablas, tenemos filas relacionadas con filas de otras tablas.
1. SQL JOIN
La sentencia JOIN, se usa para combinar data o filas de dos o más tablas
que tengan un campo en común entre ellas. Usualmente es la llave foránea.
El INNER JOIN selecciona todas las filas que tengan un valor en común con
la/s tabla/s. Si hay una fila, que no tiene un valor en común con otra tabla
no la trae.
2
¿NECESITAS UN EJEMPLO?
Profesores
1 Agustín Oviedo 24
2 Ana Gadea 15
3 Mariela Lima 20
4 Francisco Chirino 30
Cursos
Curso de
1 1000 1
Programación
Curso de
2 2000 2
Mecánica
Curso de
3 500 3
Cocina
3
El resultado que mostraría sería:
Nombre Nombre_curso
¿NECESITAS UN EJEMPLO?
SELECT nombre/s de la/s columna/s FROM tabla1 LEFT JOIN tabla2 ON
tabla1.nombre_columna = tabla2.nombre_columna;
4
Profesores
1 Agustín Oviedo 24
2 Ana Gadea 15
3 Mariela Lima 20
4 Francisco Chirino 30
Teniendo la siguiente tabla de Cursos:
Cursos
Curso de
1 1000 1
Programación
Curso de
2 2000 2
Mecánica
Nombre Nombre_curso
Mariela NULL
5
SELECT nombre/s de la/s columna/s FROM tabla1 RIGHT JOIN tabla2 ON
tabla1.nombre_columna = tabla2.nombre_columna;
¿NECESITAS UN EJEMPLO?
Teniendo la siguiente tabla de profesores:
Profesores
Id Nombre Apellido Edad
1 Agustín Oviedo 24
2 Ana Gadea 15
3 Mariela Lima 20
Cursos
Id Nombre_curso Costo Id_profesor
Curso de
1 1000 1
Programación
2 Curso de Mecánica 2000 2
3 Curso de Natación 600 NULL
Nombre Nombre_curso
6
Ana Curso de Mecánica
Subconsultas
Una subconsulta en SQL consiste en utilizar los resultados de una consulta
dentro de otra, la cual se considera la principal. Esta posibilidad fue la razón
original para la palabra “estructurada” en el nombre Lenguaje de Consultas
Estructuradas (Structured Query Language, SQL).
¿NECESITAS UN EJEMPLO?
SELECT AVG(salario) “Salario Medio” FROM Empleados;
Empleados
Salario Medio
256666,67
Empleados
Nombre Salario
7
Agustín 385000
Ana 608000
Empleados
Nombre Salario
Agustín 385000
Ana 608000
Esto nos daría el mismo resultado, pero sin la necesidad de hacer dos
consultas . En estos casos usaríamos una subconsulta, ya que no
sabíamos el salario medio antes de hacer la consulta.
¡MANOS A LA OBRA
En cada ejercicio se indica el nombre del script que se debe utilizar. Para
abrir y ejecutarlos encontrar un pdf de cómo hacerlo en Moodle, con el
nombre de Tutorial Scripts SQL.
Ejercicio #1
8
Abrir el script llamado “personal” y ejecutarlo de modo tal que se cree la
base de datos “personal”, se creen las tablas y se inserten todos los datos
en ellas. Debe observarse tal cual muestra la imagen:
9
11. Obtener el valor total a pagar que resulta de sumar el salario y la
comisión de los empleados del departamento 3000 una bonificación
de 500, en orden alfabético del empleado.
15. Obtener la lista de los empleados que ganan una comisión superior a
su sueldo.
16. Listar los empleados cuya comisión es menor o igual que el 30% de
su sueldo.
10
Consulta con Subconsulta
Ejercicio #2
11
6. Lista el código de los fabricantes que tienen productos en la tabla
producto, sin mostrar los repetidos.
11. Lista el nombre y el precio del producto más caro. (Utilice solamente
las cláusulas ORDER BY y LIMIT)
12. Lista el nombre de los productos que tienen un precio menor o igual a
$120.
13. Lista todos los productos que tengan un precio entre $60 y $200.
Utilizando el operador BETWEEN.
15. Devuelve una lista con el nombre de todos los productos que
contienen la cadena Portátil en el nombre.
Consultas Multitabla
1. Devuelve una lista con el código del producto, nombre del producto,
código del fabricante y nombre del fabricante, de todos los
productos de la base de datos.
12
5. Devuelve una lista de todos los productos del fabricante Crucial que
tengan un precio mayor que $200.
Consultas Multitabla
Resuelva todas las consultas utilizando las cláusulas LEFT JOIN y RIGHT
JOIN.
4. Lista todos los productos del fabricante Asus que tienen un precio
superior al precio medio de todos sus productos.
13
2. Devuelve los nombres de los fabricantes que no tienen productos
asociados. (Utilizando IN o NOT IN).
Extra Credits
Ejercicio #3
Abrir el script de la base de datos llamada “nba.sql” y ejecutarlo
para crear todas las tablas e insertar datos en las mismas. A continuación,
generar el modelo de entidad relación. Deberá obtener un diagrama de
entidad relación igual al que se muestra a continuación:
14
A continuación, se deben realizar las siguientes consultas sobre la base de
datos:
2. Mostrar el nombre de los jugadores que sean pivots (‘C’) y que pesen
más de 200 libras, ordenados por nombre alfabéticamente.
13. Mostrar el nombre del equipo, conferencia y división del jugador más
alto de la NBA.
15
17. Mostrar los puntos de cada equipo en los partidos, tanto de local
como de visitante.
Ejercicio #4
Abrir el script de la base de datos llamada “jardineria.sql” y
ejecutarlo para crear todas las tablas e insertar datos en las mismas.
Deberá obtener un diagrama de entidad relación igual al que se muestra a
continuación:
16
A continuación, se deben realizar las siguientes consultas sobre la base de
datos:
17
3. Devuelve un listado con el nombre, apellidos y email de los
empleados cuyo jefe tiene un código de jefe igual a 7.
7. Devuelve un listado con los distintos estados por los que puede
pasar un pedido.
14. Devuelve un listado de todos los pedidos que han sido entregados en
el mes de enero de cualquier año.
15. Devuelve un listado con todos los pagos que se realizaron en el año
2008 mediante Paypal. Ordene el resultado de mayor a menor.
18
16. Devuelve un listado con todas las formas de pago que aparecen en la
tabla pago. Tenga en cuenta que no deben aparecer formas de pago
repetidas.
18. Devuelve un listado con todos los clientes que sean de la ciudad de
Madrid y cuyo representante de ventas tenga el código de empleado
11 o 30.
19
Consultas multitabla (Composición externa). Resuelva todas las
consultas utilizando las cláusulas LEFT JOIN, RIGHT JOIN, JOIN.
9. Devuelve un listado con los clientes que han realizado algún pedido,
pero no han realizado ningún pago.
10. Devuelve un listado con los datos de los empleados que no tienen
clientes asociados y el nombre de su jefe asociado.
Consultas resumen
20
6. Calcula el número de clientes que tiene la empresa.
11. Calcula la fecha del primer y último pago realizado por cada uno de
los clientes. El listado deberá mostrar el nombre y los apellidos de
cada cliente.
18. Lista las ventas totales de los productos que hayan facturado más de
3000 euros. Se mostrará el nombre, unidades vendidas, total
facturado y total facturado con impuestos (21% IVA)
21
2. Devuelve el nombre del producto que tenga el precio de venta más
caro.
4. Los clientes cuyo límite de crédito sea mayor que los pagos que haya
realizado. (Sin utilizar INNER JOIN).
22
1. Devuelve un listado que muestre solamente los clientes que no han
realizado ningún pago.
Para curiosos…
👇
¿Quieres volverte un experto? ¡Aquí te presentamos un
último ejercicio!
Ejercicio #5
Importar el script de la base de datos llamada “pokemondb.sql” y
ejecutarlo para crear todas las tablas e insertar los registros en las mismas.
A continuación, generar el modelo de entidad relación y reorganizar las
tablas para mayor claridad de sus relaciones. Deberá obtener un diagrama
de entidad de relación similar al que se muestra a continuación:
23
A continuación, se deben realizar las siguientes consultas:
4. Mostrar los pokemon de tipo agua, fuego o tierra ordenados por tipo.
6. Mostrar los pokemon con una estadística base de ps mayor que 200.
24
15. Mostrar todos los movimientos que aprende pikachu.
16. Mostrar todos los movimientos que aprende pikachu por MT (tipo de
aprendizaje).
17. Mostrar todos los movimientos de tipo normal que aprende pikachu
por nivel.
Antes de terminar…
Checkpoint
¿Cómo has llegado hasta aquí? Responde el siguiente cuestionario te llevará
no más de 15 minutos. https://forms.gle/eAgMjLjtjFNcTeoA6
¡Hora de cerrar!
25