Vereisten voor het uiterlijk van de JOIN-operator
Naarmate de hoeveelheid gegevens in tabellen groeit, verschijnen er vaak dubbele waarden in. De producttabel heeft bijvoorbeeld merknamen. die soms herhaald worden. Het zou handig zijn om voor hen een aparte merktabel te hebben, die bijvoorbeeld dergelijke gegevens zou bevatten:
- id - merk-id;
- naam – merknaam;
- company_owner - de naam van de bedrijfseigenaar van het merk;
- company_contacts - contacten van het bedrijf van de merkeigenaar.
Vervolgens willen we een tabel met adressen maken waarin we alle adressen kunnen plaatsen:
- id – id-adressen;
- land;
- regio;
- stad;
- straat;
- huis;
- ritssluiting.
Bovendien zou het in deze tabel mogelijk zijn om de adressen op te slaan van niet alleen merken die eigenaar zijn van bedrijven, maar ook de adressen van klanten en werknemers. En deze aanpak is simpelweg een gevolg van de groei van de hoeveelheid data (het aantal rijen in de tabellen). Dit maakt het gemakkelijker om gegevens in tabellen te manipuleren en hun integriteit te behouden.
Wanneer u 5 werknemers heeft, kunt u eenvoudig hun beroep invullen in de bezettingskolom . Als u 5000 werknemers in uw bedrijf heeft, heeft u een tabel nodig met een lijst met x beroepen en hun verantwoordelijkheden.
In de Java-taal bestaat trouwens iets soortgelijks. Als je veel code in een methode hebt, dan is er een wens om het op te splitsen in verschillende methoden. Als er veel methoden in een klasse zijn, wil ik deze in verschillende klassen onderverdelen.
Daarom hebben grote databases duizenden tabellen. En bijna alle query's worden op meerdere tabellen tegelijk uitgevoerd. En het Cartesiaanse product van de rijen van drie tabellen die elk duizend records hebben, is al een miljard rijen.
Maar alleen al het filteren van een miljard rijen met WHERE kan uren duren. Daarom boden de makers van de SQL-taal hun oplossing aan: de JOIN-operator.
Inleiding tot de JOIN-operator
De JOIN-operator wordt gebruikt om de SQL-server expliciet te vertellen dat we geen Cartesiaans product van alle rijen tabellen voor allemaal nodig hebben, maar een slimme verlijming van rijen van verschillende tabellen die naar elkaar verwijzen met behulp van een ID (of op een andere manier). . De server heeft een apart algoritme voor het verwerken van tabeljoins met behulp van de JOIN-operator, waardoor dergelijke bewerkingen veel sneller kunnen worden uitgevoerd. De algemene vorm van de JOIN-operator is als volgt:
table 1 JOIN table 2 ON condition
Hier staat dat je de tabellen table1 en table2 in één tabel moet combineren en de voorwaarde als joincriterium moet gebruiken .
Laten we ons oude voorbeeld nemen:
SELECT * FROM employee, task WHERE emploee.id = task.emploee_id
En herschrijf het met de JOIN-operator:
SELECT * FROM employee JOIN task ON emploee.id = task.emploee_id
Beide zoekopdrachten zullen in ons geval hetzelfde resultaat opleveren, maar dit komt alleen omdat de zoekopdrachten heel eenvoudig zijn. In de toekomst kunt u met WHERE precies het rijfilter opbouwen, en met degene die na ON wordt gespecificeerd, kunt u complexe scripts schrijven voor het koppelen van tabellen. U kunt ook aliassen (tabelaliassen) gebruiken bij het gebruik van de JOIN-instructie. Voorbeeld:
SELECT * FROM employee e JOIN task t ON e.id = t.emploee_id