Indholdsfortegnelse
Til denne vejledning vil vi bruge en af de eksempeldatabaser, som Mysql giver os gratis, den kaldes Sakila, vi kan også downloade andre eksempler fra det officielle Mysql -websted.Mange universiteter bruger dem til at teste MySQL og til programmering.
Derefter pakker vi den downloadede fil ud, og vi ser to filer sakila-schema.sql der indeholder databasestrukturen og sakila-data.sql A indeholdende prøvedata.
Formålet med denne database er at levere et testmiljø, enten til at udvikle software eller teste sql -forespørgsler og dermed være i stand til at udføre tests med de muligheder, MySQL tilbyder. Sakilas struktur er kompleks, den har 1000 optegnelser og flere relationer.
Sakila -databasen indeholder også eksempler på visninger, lagrede procedurer og udløsere.
Denne database forudsætter en filmudlejningsbutik, der kan have filialer og leverandører,
Processen forudsætter, at for at leje en film skal vi først bekræfte, at filmen er tilgængelig eller på lager, og derefter skal vi kontrollere, om klienten findes i databasen, og vi vil tildele filmen eller dvd'en til klienten. Vi skal også indsætte salget i betalingstabellen. Afhængigt af forretningsreglerne kan det også være nødvendigt at kontrollere, om kunden har en udestående saldo.
For at kontrollere, om klienten findes ved navn, kan vi lave en simpel forespørgsel:
vælg customer.customer_id, customer.store_id, CONCAT (customer.first_name, '', customer.last_name) som kunde fra kunde, hvor customer.first_name kan lide 'Carlos%I denne vejledning fokuserer vi på kombinerede forespørgsler ved at udføre flere eksempler, der vil blive forklaret detaljeret.
SQL Inner Join -klausul
En SQL JOIN -klausul bruges til at kombinere rækker fra to eller flere tabeller baseret på et fælles felt mellem dem.
INDRE JOIN returnerer alle de sammenføjede rækker fra tabellerne, der opfylder sammenkædningsbetingelsen.
Eksempel A
Vi vil vide, hvilke kunder der lejede film til dette, vi har kundetabellen og lejebordet, derfor skal vi vide, hvilke kunder der er i lejebordet.
vælg rental.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_idResultatet af udførelsen af denne klausul vil være følgende:
I dette tilfælde er det det samme at gøre forespørgslen med et Hvor:
vælg rental.rental_id, customer.first_name, customer.last_name, rental.rental_date, rental.return_date from rental, customer where rental.customer_id = customer.customer_idForskellen er, at den indre deltager i optimeringen af SQL -forespørgslen, der vil være noget hurtigere.
Eksempel B
Vi har to butikker eller filialer, der genererer en daglig liste over forfaldne huslejer, så kunderne kan kontaktes og blive bedt om at returnere filmen.
For at generere denne liste skal vi søge i lejetabellen efter film med en returdato, der er NULL, det vil sige ingen dato, og at lejedatoen overstiger den tid eller det antal dage, som klienten kan beholde filmen. Hvis denne betingelse er opfyldt, har kunden gæld til filmen, og filmens navn skal vises på listen sammen med klientens navn, telefonnummer og e -mail. Vi viser også, om filmen er betalt, på hvilken dato den blev betalt, og hvor meget der blev betalt.
VÆLG CONCAT (customer.last_name, ',', customer.first_name) SOM kunde, adresse. 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 adresse ON customer.address_id = address.address_id INNER JOIN beholdning ON rental.inventory_id = inventar.inventory_id INNER JOIN film ON inventar.film_id INNER JOIN betaling ved betaling.rental_id = leje.rental_id HVOR .return_date ER NULL OG rental_date + INTERVAL film.rental_duration DAY <CURRENT_DATE ()
Eksempel C
Vi vil finde ud af, hvilken klient der lejer flest film til dette, vi skriver følgende klausul
Vælg CONCAT (customer.first_name, '', customer.last_name) som kunde, tæl (rental.customer_id) som Total fra rental inner join customer på rental.customer_id = customer.customer_id group efter rental.customer_id ***** i alt descSå vi kan lave mange tests med Mysql for at teste ydeevnen. I en anden vejledning vil vi gå videre i mere komplekse forespørgsler:
Eksempel C
Vi vil finde ud af, hvilken klient der lejer flest film til dette, vi skriver følgende klausul
Vælg CONCAT (customer.first_name, '', customer.last_name) som kunde, tæl (rental.customer_id) som Total fra rental inner join customer på rental.customer_id = customer.customer_id group efter rental.customer_id ***** i alt descSå vi kan lave mange tests med MySQL for at teste ydeevnen. I en anden vejledning vil vi gå videre i mere komplekse forespørgsler.
Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt