Bases de Datos
TICS320
Clase SQL
David Larrondo N.
Primer Semestre
2024
Agenda
Revisión Actividad Modelo Físico
1 Resolver dudas y mostrar otros ejemplos
Repaso estructura del SELECT
2 SELECT, FROM, WHERE, GROUP BY, ORDER BY, LIMIT
HAVING
3 Lo incorporamos como una posible herramienta para filtrar
Sub-consultas (SUBQUERIES)
4 Ejercicios propuestos
Optimización de consultas
5 Ejercicios propuestos
TICS320 - Bases de Datos | 2024
3 SQL - Múltiples tablas
INNER JOIN
Nuestro método separando las tablas por comas
y agregando los filtros en el WHERE es
equivalente al INNER JOIN.
Esta sería otra forma de realizar lo mismo,
algunos la prefieren, ya que es más sencillo de
leer para el ojo humano, pero para la base de
datos es exactamente lo mismo.
Importante destacar que en general es bueno
utilizar el nombre de la tabla antes del atributo,
podemos crear alias si son muy largos. En
algunos casos la consulta puede directamente
arrojar un error, como en el ejemplo de esta
imagen, dado que la llave “Product” es la misma
en ambas tablas, con el nombre de la tabla se
evita la ambigüedad.
TICS320 - Bases de Datos | 2024
3 SQL - Múltiples tablas
Más / otros JOIN
Además del LEFT JOIN, por
supuesto está el RIGHT JOIN,
la única diferencia sería en el
orden de las tablas, si la de
la izquierda o la derecha es
la base (que no tiene NULL).
Pensemos en algunos
ejemplos donde estos JOIN
sería útiles.
Agenda
¿Cómo leer una base de datos?
1
Ejemplos uso de funciones y filtros en SELECT
2 Funciones matemáticas, Group By y operadores lógicos en WHERE
Uniendo múltiples tablas
3 Esto se denomina JOIN - existen varios tipos y formas de hacerlo
Más ejemplos y desafíos mezclando lo visto hoy
4 Ejercicios propuestos
TICS320 - Bases de Datos | 2024
4 SQL - Ejercicios Propuestos
Otras preguntas para practicar
1. Nombre y apellido del actor que tuvo como rol “Drinker #1” junto con el nombre de la película.
2. Nombre de las películas que ha actuado el actor de nombre “Akimitsu”.
3. Nombre la película donde actuaron más mujeres.
4. ¿Cuáles son los roles que han tenido a más de un actor en una misma película? Entregar el
nombre de la película y el rol. Ordene por nombre de película desde la A a la Z.
5. ¿Cuál es el género de películas con el mayor ranking promedio?
1
SELECT
a.first_name,
a.last_name,
[Link]
FROM
actors a
JOIN
roles r ON a.actor_id = r.actor_id
JOIN
movies m ON r.movie_id = m.movie_id
WHERE
r.role_name = 'Drinker #1';
2
SELECT
[Link]
FROM
actors a
JOIN
roles r ON a.actor_id = r.actor_id
JOIN
movies m ON r.movie_id = m.movie_id
WHERE
a.first_name = 'Akimitsu';
3
SELECT
[Link],
COUNT(a.actor_id) AS num_actresses
FROM
actors a
JOIN
roles r ON a.actor_id = r.actor_id
JOIN
movies m ON r.movie_id = m.movie_id
WHERE
[Link] = 'F'
GROUP BY
[Link]
ORDER BY
num_actresses DESC
LIMIT 1;
4
SELECT
[Link],
r.role_name
FROM
movies m
JOIN
roles r ON m.movie_id = r.movie_id
GROUP BY
[Link], r.role_name
HAVING
COUNT(r.actor_id) > 1
ORDER BY
[Link] ASC;
5
SELECT
g.genre_name,
AVG([Link]) AS average_rating
FROM
genres g
JOIN
movies m ON g.genre_id = m.genre_id
JOIN
ratings r ON m.movie_id = r.movie_id
GROUP BY
g.genre_name
ORDER BY
average_rating DESC
LIMIT 1;