Forutsetninger for utseendet til JOIN-operatøren
Etter hvert som mengden data i tabeller vokser, vises ofte dupliserte verdier i dem. For eksempel har produkttabellen merkenavn. som noen ganger gjentas. Det ville være nyttig å ha en egen merketabell for dem, som for eksempel vil inneholde slike data:
- id - merke-id;
- navn – merkenavn;
- company_owner - navnet på selskapets eier av merkevaren;
- company_contacts - kontakter til merkeeierens selskap.
Deretter vil vi lage en adressetabell der vi kan legge inn alle adressene:
- id – id-adresser;
- land;
- region;
- by;
- gate;
- hus;
- glidelås.
Dessuten vil det i denne tabellen være mulig å lagre adressene til ikke bare merkevareeiende selskaper, men også adressene til kunder og ansatte. Og denne tilnærmingen er ganske enkelt en konsekvens av veksten i mengden data (antall rader i tabellene). Dette gjør det lettere å manipulere data i tabeller og opprettholde deres integritet.
Når du har 5 ansatte, kan du enkelt legge inn yrket deres i yrkeskolonnen . Hvis du har 5 tusen ansatte i bedriften din, trenger du en tabell med en liste over x yrker og deres ansvar.
I Java-språket er det forresten noe lignende. Hvis du har mye kode i en metode, så er det et ønske om å dele den opp i flere metoder. Hvis det er mange metoder i en klasse, vil jeg dele den inn i flere klasser.
Det er derfor store databaser har tusenvis av tabeller. Og nesten alle spørringer utføres på flere tabeller samtidig. Og det kartesiske produktet av radene med tre tabeller i hver av dem har tusen poster er allerede en milliard rader.
Men bare å filtrere en milliard rader med WHERE kan ta timer. Derfor tilbød skaperne av SQL-språket sin løsning - JOIN-operatøren.
Introduksjon til JOIN-operatøren
JOIN-operatoren brukes til å eksplisitt fortelle SQL-serveren at vi ikke trenger et kartesisk produkt av alle rader med tabeller for alle, men en smart liming av rader med forskjellige tabeller som refererer til hverandre ved hjelp av en ID (eller på annen måte) . Serveren har en egen algoritme for å behandle tabellsammenføyninger ved å bruke JOIN-operatoren, som gjør at slike operasjoner kan utføres mye raskere. Den generelle formen for JOIN-operatøren er som følger:
table 1 JOIN table 2 ON condition
Her står det at du må kombinere tabellene tabell1 og tabell2 til én tabell, og bruke betingelsen som sammenføyningskriteriet .
La oss ta vårt gamle eksempel:
SELECT * FROM employee, task WHERE emploee.id = task.emploee_id
Og skriv det om ved å bruke JOIN-operatoren:
SELECT * FROM employee JOIN task ON emploee.id = task.emploee_id
Begge spørringene vil gi samme resultat i vårt tilfelle, men dette er kun fordi spørringene er veldig enkle. I fremtiden lar WHERE deg bygge opp nøyaktig radfilteret, og det som er spesifisert etter ON lar deg skrive komplekse skript for å koble tabeller. Du kan også bruke aliaser (tabellaliaser) når du bruker JOIN-setningen. Eksempel:
SELECT * FROM employee e JOIN task t ON e.id = t.emploee_id
GO TO FULL VERSION