Ejercicios Join

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’

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';

Base de datos sakila

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