Baza
DVD Rental Service
source
restore
Subqueries
SELECT
film_id,
title,
rental_rate
FROM
film
WHERE
rental_rate > (
SELECT
AVG (rental_rate)
FROM
film
);
SELECT
film_id,
title
FROM
film
WHERE
film_id IN (
SELECT
inventory.film_id
FROM
rental
INNER JOIN inventory ON inventory.inventory_id = rental.inventory_id
WHERE
return_date BETWEEN '2005-05-29' AND '2005-05-30'
);
SELECT
first_name,
last_name
FROM
customer
WHERE
EXISTS (
SELECT
1
FROM
payment
WHERE
payment.customer_id = customer.customer_id
);
Views
CREATE [OR REPLACE] VIEW active_customer AS
SELECT *
FROM customer
WHERE active = 1
SELECT *
FROM active_customer
INSERT INTO active_customer (store_id, first_name, last_name, email, address_id, activebool, create_date, last_update)
VALUES(1, 'Joe', 'Doe', 'joe@doe.net', 1, true, now(), now());
SELECT active FROM customer WHERE email = 'joe@doe.net';
DELETE FROM active_customer WHERE email = 'joe@doe.net'
DROP VIEW active_customer;
Materialized Views
CREATE MATERIALIZED VIEW active_customer AS
SELECT *
FROM customer
WHERE active = 1
REFRESH MATERIALIZED VIEW active_customer;
DROP MATERIALIZED VIEW active_customer;
Ćwiczenia
- Uruchomic przykłady
- Napisać zapytanie z
subquery, które zwróci imie i nazwisko aktora, który
zagrał w min. 40 filmach
- Utworzyć:
- view dla
customer i address z nazwa customer_with_address
- materialized view dla
customer i address z nazwa customer_with_address_m
- Zmodyfikować customer-a(ów) i address w tabeli
customer, customer_with_address oraz customer_with_address_m.
- znaleźć customer i jego address w widokach, podzielić się wnioskami na PM