Actividad de Aprendizaje 3.
MySQL
1. INSTALAR LA BASE DE DATOS MYSQL 5.0 O SUPERIOR.
2. INSTALAR Y UTILIZAR LA BASE DE DATOS DE EJEMPLO ADJUNTA
LLAMADA “SAKILA‐SCHEMA.SQL
1. SELECCIONAR TODOS LOS ACTORES QUE HAYAN PARTICIPADO
EN UNA PELÍCULA DE COMEDIA (COMEDY).
SELECT first_name AS Nombre, Last_name AS Apellido, name AS Categoria, title AS
PeliculaFROM actor ac, category ca, filmWHERE ca.name = 'Comedy';
2. SABER CUÁNTAS PELÍCULAS, DE QUE CATEGORÍA Y EN QUÉ
IDIOMA HA FILMADO LA ACTRIZ SANDRA KILMER.
SELECT COUNT(*) AS Numero, category.name AS Nombre_Categoria, language.name
AS IdiomaFROM actor ac, category, languageWHERE ac.first_name = 'SANDRA' AND
ac.last_name = 'KILMER';
3. SELECCIONAR EL NOMBRE DE LA PELÍCULA Y DE LOS ACTORES
DE TODAS AQUELLAS QUE SEAN FILMADAS EN IDIOMA
ITALIANO.
SELECT film.title AS Pelicula, actor.first_name AS Nombre, actor.Last_name AS Apellido,
name ASIdiomaFROM film, actor, language idWHERE id.name = 'Italian';
4. SELECCIONAR LA DIRECCIÓN COMPLETA DE LOS
COMPRADORES QUE SEAN DE MÉXICO Y USA.
SELECT address AS Direccion, country As paisFROM address ad, Country co
WHERE co.country ‘Mexico’ OR co.country 'United States';
5. SELECCIONAR LA DIRECCIÓN COMPLETA DEL STAFF QUE SEAN
DE USA.
SELECT address AS Dirección
FROM address ad, Country co
WHERE co.country = 'United States';
6. QUIÉN ES EL RESPONSABLE DE CADA UNA DE LAS TIENDAS Y
SU DIRECCIÓN, JUNTO CON LA DIRECCIÓN DE LA TIENDA.
SELECT first_name AS Nombre, last_name AS Apellido, address AS
Direccion_Encargado, address
AS Direccion_Tienda
FROM staff, store, address;
7. CUÁNTAS RENTAS SE REALIZARON EN CADA UNO DE LOS
MESES DEL AÑO 2005 Y 2006.
SELECT COUNT(*) AS Total_Rentas
FROM rental r
WHERE year(rental_date) in (2005, 2006);
8. QUÉ RESPONSABLE DEL STAFF REALIZÓ MÁS RENTAS Y CUÁL
FUE EL INGRESO.
SELECT CONCAT(c.city, _utf8',', cy.country) AS store
, CONCAT(m.first_name, _utf8' ', m.last_name) AS manager
, SUM(p.amount) AS total_sales
FROM payment AS p
INNER JOIN rental AS r ON p.rental_id = r.rental_id
INNER JOIN inventory AS i ON r.inventory_id = i.inventory_id
INNER JOIN store AS s ON i.store_id = s.store_id
INNER JOIN address AS a ON s.address_id = a.address_id
INNER JOIN city AS c ON a.city_id = c.city_id
INNER JOIN country AS cy ON c.country_id = cy.country_id
INNER JOIN staff AS m ON s.manager_staff_id = m.staff_id
GROUP BY s.store_id
ORDER BY cy.country, c.city
9. QUIÉN FUE LA PERSONA QUE REALIZO MÁS RENTAS DE UNA
PELÍCULA EN FRANCÉS.
SELECT first_name AS Nombre,count(*)
FROM staff, rental, language la
WHERE la .name='FRENCH’;
10. QUÉ ACTORES SON LOS QUE PREFIEREN LAS PERSONAS QUE
VIVEN EN MÉXICO.
SELECT first_name AS Nombre, Last_name AS Apellido
FROM actor ac, country co
where co.country ='Mexico'
PROCESOS.
1. ¿CUÁLES SERÍAN LOS CAMBIOS NECESARIOS PARA AGREGAR
UNA DIRECCIÓN A LOS ACTORES?
ALTER table actor ADD
address varchar(50);
Agregar a la tabla actor el atributo address (dirección)
2. ¿QUÉ NECESITARÍAS HACER PARA SABER DE QUÉ PAÍS ES
CADA PELÍCULA?
Una nueva tabla llamada country_film con una llave llamada country_film_id, y el campo
country, CREATE TABLE cuntry_film (
country_film_id smallint unsigned default null auto_increment,
country varchar(50) not null,
PRIMARY KEY (country_film_id));
3. AGREGAR UNA TABLA PARA GUARDAR LOS DATOS DEL
DIRECTOR DE LA PELÍCULA.
Como ya se creó una tabla para saber de qué país es cada película, se le agrega un
campo que se llame dirección
/*ALTER table cuntry_film
ADD address varchar(50) not null;*/
4. CREAR UNA VISTA QUE NOS INDIQUE CUÁNTAS PELÍCULAS HAY
EN CADA IDIOMA.
SELECT film.title AS Pelicula, actor.first_name AS Nombre, actor.Last_name, name AS Idioma
FROM film, actor, language id
WHERE id.name = name
5. ¿QUÉ PASA SI BORRAMOS UNA TIENDA?
Afectaría a la entidad (personal) staff ya que hay una relación con el código Id como clave
primaria Afectaría a la entidad Alquiler (rental) ya que tienda (store) aparece como atributo
foráneo.
La entidad cliente (customer) afectaría ya hay una relación entre la entidad tienda (store) y
cliente al pasar la entidad tienda a la entidad cliente como clave primaria.
La entidad cliente (customer) afectaría a dirección (address) ya que hay una relación con
el código Id como clave primaria.
Afectaría a inventario (Inventory) ya que hay una relación del código Id como primaria.
Prácticamente se afectarían toda la relación entre las entidades de la base de datos
porque al borrar tienda (store) se perdería la relación con algunas entidades y no
tendríamos información de la tienda (stores) y sus atributos.