Mnoho univerzit je používá k testování MySQL a k programování.
Dále stažený soubor rozbalíme a uvidíme dva soubory sakila-schema.sql obsahující strukturu databáze a sakila-data.sql A obsahující ukázková data.
Cílem této databáze je poskytnout testovací prostředí, a to buď pro vývoj softwaru, nebo pro testování sql dotazů, a tak být schopen provádět testy s možnostmi, které nabízí MySQL. Sakilova struktura je složitá, má 1000 záznamů a několik vztahů.
Databáze Sakila také obsahuje příklady zobrazení, uložených procedur a spouštěčů.
Tato databáze předpokládá půjčovnu filmů, která může mít pobočky a dodavatele,
Proces předpokládá, že k zapůjčení filmu musíme nejprve potvrdit, že je film k dispozici nebo skladem, a poté musíme zkontrolovat, zda klient existuje v databázi, a přiřadíme klientovi film nebo DVD. Prodej musíme také vložit do tabulky výplat. V závislosti na obchodních pravidlech může být také nutné zkontrolovat, zda má zákazník nevyrovnaný zůstatek.
Chcete -li zkontrolovat, zda klient existuje podle jména, můžeme provést jednoduchý dotaz:
vyberte customer.customer_id, customer.store_id, CONCAT (customer.first_name, '', customer.last_name) jako Customer from customer where customer.first_name like 'Carlos%V tomto kurzu se zaměříme na kombinované dotazy provedením několika příkladů, které budou podrobně vysvětleny.
Klauzule vnitřního spojení SQL
Klauzule SQL JOIN se používá ke kombinování řádků ze dvou nebo více tabulek na základě společného pole mezi nimi.
VNITŘNÍ SPOJENÍ vrátí všechny spojené řádky z tabulek, které splňují podmínku spojení.
Příklad A.
Chceme vědět, kteří zákazníci si na to půjčili filmy, máme tabulku zákazníků a tabulku výpůjček, proto musíme vědět, kteří zákazníci jsou v tabulce výpůjček.
vyberte pronájem.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date from rental INNER JOIN customer ON rental.customer_id = customer.customer_idVýsledkem provedení této klauzule bude následující:
V tomto případě je stejné provést dotaz pomocí Kde:
vyberte pronájem.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date from rental, customer where rental.customer_id = customer.customer_idRozdíl je v tom, že vnitřní spojení při optimalizaci dotazu SQL bude o něco rychlejší.
Příklad B
Máme dva obchody nebo pobočky, které generují denní seznam zpožděných výpůjček, aby bylo možné zákazníky kontaktovat a požádat o vrácení filmu.
Chcete -li vygenerovat tento seznam, musíme vyhledat v tabulce výpůjčky filmy s datem vrácení NULL, tedy bez data, a že datum vypůjčení přesahuje čas nebo počet dní stanovených, že si klient může film ponechat. Pokud je tato podmínka splněna, pak je klient dlužen za film a název filmu by měl být uveden v seznamu spolu s klientovým jménem, telefonním číslem a e -mailem. Ukážeme také, zda je film zaplacen, k jakému datu byl zaplacen a kolik bylo zaplaceno.
VYBRAT CONCAT (customer.last_name, ',', customer.first_name) AS customer, address.phone, film.title, customer.email, rental.return_date, payment.payment_date, payment.amount FROM rental INNER JOIN customer ON rental.customer_id = customer.customer_id INNER JOIN adresa ON customer.address_id = adresa.address_id INNER JOIN inventář ON rental.inventory_id = inventář.inventory_id VNITŘNÍ PŘIPOJENÍ film ON .return_date JE NULL A datum_půjčky + INTERVAL film.rental_duration DEN <CURRENT_DATE ()
Příklad C.
Chceme zjistit, který klient si za to pronajme nejvíce filmů, proto napíšeme následující klauzuli
Vyberte CONCAT (customer.first_name, '', customer.last_name) jako Customer, count (rental.customer_id) as Total from rental inner join customer on rental.customer_id = customer.customer_id group by popisMůžeme tedy provést mnoho testů s MySQL pro testování výkonu. V dalším kurzu budeme postupovat ve složitějších dotazech:
Příklad C.
Chceme zjistit, který klient si za to pronajme nejvíce filmů, proto napíšeme následující klauzuli
Vyberte CONCAT (customer.first_name, '', customer.last_name) jako Customer, count (rental.customer_id) as Total from rental inner join customer on rental.customer_id = customer.customer_id group by popisMůžeme tedy provést mnoho testů s MySQL, abychom otestovali výkon. V dalším tutoriálu pokročíme ve složitějších dotazech.
Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod