1.- Titulos de películas de acción
2.- Nombres de actores que hayan trabajado en películas de rating ‘G’ o ‘PG’
3.- Nombres de clientes de Argentina
4.- Nombres de actores que hayan trabajado en categoría ‘Children’ o ‘Family’
Mes: marzo 2021
Ejemplos join
https://www.w3schools.com/sql/sql_join.asp
Nuestra base de datos es relacional, así que relacionamos las tablas mediante el join:
SELECT country, city, city_id FROM country join city on country.country_id=city.country_id; select country,city from country join city using(country_id); SELECT name, title FROM category join film_category on category.category_id=film_category.category_id join film on film_category.film_id=film.film_id; SELECT name, title FROM category join film_category using(category_id) join film using(film_id); SELECT name, title FROM category join film_category using(category_id) join film using(film_id) where name in ('Family','Children') and title like '%strange%' and rating='G' -- ¿Qué actores han trabajado en documentales? SELECT distinct name, first_name, last_name FROM category join film_category on category.category_id=film_category.category_id join film on film_category.film_id=film.film_id join film_actor on film.film_id=film_actor.film_id join actor on film_actor.actor_id=actor.actor_id where name='Documentary' order by name, first_name, last_name
Ejercicios operadores básicos
Seleccionar todos los actores cuyo nombre empieze por ‘A’ y el apellido acabe por ‘N’
Seleccionar todos los actores cuyo id esté entre 20 y 70 y el apellido empiece por ‘A’
Seleccionar todas las películas (tabla film) cuyo rental_duration sea 3
Seleccionar todas las películas (tabla film) cuyo rental_duration sea 3 y el title empiece por ‘A’
Seleccionar todas las películas (tabla film) cuyo rental_duration sea 3 y el title empiece por ‘A’ o el rating sea ‘G’
Seleccionar todas las películas cuyo rating sea ‘G’, ‘PG’ o ‘R’
Operador SQL
between: valores en un rango
select * from actor
where actor_id between 20 and 25
in: Valores en una lista
select * from actor
where first_name in (‘ED’,’TED’)
Like: Valores siguiendo un patrón
-- Caracteres comodin: % cualquier cadena _ cualquier caracter -- Empiecen por select * from actor where first_name like 'EL%'; -- Acaben por select * from actor where first_name like '%EN'; -- Empiecen y acaben por select * from actor where first_name like 'E%N'; -- Contengan select * from actor where first_name like '%AN%'; -- El guión bajo encaja con un sólo carácter</pre> select * from actor where first_name like '_AN'; select * from actor where first_name like '%AN'; select * from actor where first_name like '_E_'; select * from actor where first_name like 'T_M';
Un programa de 1958 que sigue funcionando (y así seguirá)
Sakila modelo de datos
Base de datos sakila
¿Cómo importarlo?
Tenemos dos sql
schema y data
Primero importamos el esquema. Opciones:
Workbench copiar sql pegarlo en una consulta y ejecutar
Workbench Server->data Import->self-contained-file->Seleccionar archivo
PhpMyAdmin copiar sql pegarlo en ventana SQL
PhpMyadmin->importar->Seleccionar archivo Deshabilitar revisión claves foráneas
Resumen SQL modificar datos
-- LMD Lenguaje de manipulación de datos -- CRUD --> Create Read Update Delete Operaciones básicas sobre datos -- Mantenimiento de una tabla: Altas bajas modificaciones y consultas -- Create: insert into nombre_tabla (lista_de_campos) values (lista_de_valores) insert into autor (nombre,email,pais_nacimiento) values ('eva','eva@eva.com','Francia'); insert into autor (nombre,email) values ('eva','eva@eva.com'),('eva','eva@eva.com'); insert into musico (nombre, descripcion) values ('Johann Sebastian Bach','Un excelente músico renacentista'), ('Evaristo García','Representante del nuevo sonido manchego'); -- UPdate update nombre_tabla set campo=nuevo valor[, campo2=nuevo valor] [where condicion] -- Aunque el where es opcional casi siempre será obligatorio -- Aunque la condición puede ser cualquiera es muy frecuente id=numero update musico set nombre='Juanito Prime', descripcion='hola' where id_musico=1; update musico set descripcion='Músico muy competente' where id_musico=10; update musico set descripcion='Músico muy competente' where descripcion='qqqqq'; -- Delete delete from tabla [where condicion] delete from musico where id_musico=12; delete from musico where descripcion='eeee'; delete from musico where nombre='Juanito'; -- Vaciar una tabla truncate tabla truncate musico;
Ejercicio LMD
Tengo la siguiente tabla:
CREATE TABLE `autor` ( `idautor` int(11) NOT NULL AUTO_INCREMENT, `nombre` varchar(150) NOT NULL, `email` varchar(100) DEFAULT NULL, `pais_nacimiento` varchar(25) DEFAULT NULL, PRIMARY KEY (`idautor`) )
Realizad lo siguiente utilizando lenguaje de manipulación de datos
Insertar los siguientes registros: Ana, ana@gmail.com, España; Eva, eva@gmail.com,España;John, john@gmail.com,Francia;Rose, rose@gmail.com,Francia
Modificar el registro de JOhn (buscar el id para que sea exacto) y cambiar el mail a john.f@gmail.com
Eliminar a Eva (buscar el id para que sea exacto)
Seleccionar todos los autores con un id mayor de 2
Ejercicio DML Musicos
Insertar los siguiente músicos:
‘Johann Sebastian Bach’, ‘Músico renacentista muy bueno’
‘Evaristo García’, ‘Representante de los nuevos sonidos manchegos’
Modificar el músico con la primera id (1) cambiar la descripción a: ‘Músico excelente’
Eliminar el músico con id 1