Categorías y países

select name,country from category join film_category using (category_id)
join film using (film_id)
join inventory using (film_id)
join rental using (inventory_id)
join customer using (customer_id)
join address using (address_id)
join city using (city_id)
join country using (country_id)
where name='Action' and country='Argentina'

left y right join

-- Relacionar los registros que aparecen en las dos tablas
-- Si mi registro no tiene registros relacionados en la otra tabla
-- NO APARECE

select country,city
from country inner join city using(country_id)
where city like 'T%';

-- ¿Cómo puedo hacer que aparezcan?
-- Cambiar el tipo de join: left, right

select country,city
from country left join city using(country_id)
where country like 'A%';


select country,city
from country right join city using(country_id)
where city like 'T%';

select country,city
from country left join city using(country_id)
where city is null;


select country,city
from country right join city using(country_id)
where country is null

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;