Förutsättningar för JOIN-operatörens utseende
När mängden data i tabeller växer, visas ofta dubbletter av värden i dem. Till exempel har produkttabellen varumärken. som ibland upprepas. Det skulle vara användbart att ha en separat varumärkestabell för dem, som till exempel skulle innehålla sådana data:
- id - varumärkes-id;
- namn – varumärke;
- company_owner - namnet på företagets ägare av varumärket;
- company_contacts - kontakter för varumärkesägarens företag.
Sedan skulle vi vilja skapa en tabell med adresser där vi kan lägga in alla adresser:
- id – id-adresser;
- Land;
- område;
- stad;
- gata;
- hus;
- blixtlås.
Dessutom skulle det i denna tabell vara möjligt att lagra adresser till inte bara varumärkesägande företag utan även adresser till kunder och anställda. Och detta tillvägagångssätt är helt enkelt en konsekvens av ökningen av mängden data (antalet rader i tabellerna). Detta gör det lättare att manipulera data i tabeller och behålla deras integritet.
När du har 5 anställda kan du helt enkelt ange deras yrke i yrkeskolumnen . Om du har 5 tusen anställda i ditt företag behöver du en tabell med en lista över x yrken och deras ansvar.
I Java-språket finns det förresten något liknande. Om du har mycket kod i en metod, så finns det en önskan att dela upp den i flera metoder. Om det finns många metoder i en klass, då vill jag dela upp den i flera klasser.
Det är därför stora databaser har tusentals tabeller. Och nästan alla frågor körs på flera tabeller samtidigt. Och den kartesiska produkten av raderna med tre tabeller i var och en av dem har tusen poster är redan en miljard rader.
Men att bara filtrera en miljard rader med WHERE kan ta timmar. Därför erbjöd skaparna av SQL-språket sin lösning - JOIN-operatören.
Introduktion till JOIN-operatören
JOIN-operatorn används för att uttryckligen tala om för SQL-servern att vi inte behöver en kartesisk produkt av alla rader av tabeller för alla, utan en smart limning av rader av olika tabeller som refererar till varandra med hjälp av ett ID (eller på annat sätt) . Servern har en separat algoritm för att bearbeta tabellkopplingar med JOIN-operatorn, vilket gör att sådana operationer kan utföras mycket snabbare. Den allmänna formen för JOIN-operatören är följande:
table 1 JOIN table 2 ON condition
Det står här att du måste kombinera tabellerna tabell1 och tabell2 till en tabell, och använda villkoret som kopplingskriterium .
Låt oss ta vårt gamla exempel:
SELECT * FROM employee, task WHERE emploee.id = task.emploee_id
Och skriv om det med JOIN-operatorn:
SELECT * FROM employee JOIN task ON emploee.id = task.emploee_id
Båda frågorna kommer att ge samma resultat i vårt fall, men det beror bara på att frågorna är väldigt enkla. I framtiden låter WHERE dig bygga upp exakt radfiltret, och det som anges efter ON låter dig skriva komplexa skript för att länka tabeller. Du kan också använda alias (tabellalias) när du använder JOIN-satsen. Exempel:
SELECT * FROM employee e JOIN task t ON e.id = t.emploee_id