Overzicht van typen joins in SQL Server
De clausule Join, het trefwoord JOIN, is meerdere tabellen samengevoegd in één resultatenset. De clausule FROM moet alle tabellen bevatten. Scheidt elke tabel met een komma.
We kunnen de Booleaanse uitdrukking invoeren die waar of onwaar retourneert, en die uitdrukkingen kunnen verwijzen naar kolommen in alle tabellen.
Typen joins in SQL Server
Er zijn verschillende soorten Joins
- CROSS JOIN
- BINNENKANTE
- BUITENKANTE
- LINKER BUITENKANT
- JUISTE BUITENKANT
- VOLLEDIGE BUITENKANTE
- ZELF AANMELDEN
Laten we elk van deze joins in detail begrijpen: -
1) Cross Join
- Dit is de eenvoudigste JOIN
- Het retourneert alle rijen uit beide tabellen
- Nee WAAR clausule
- Dit is ook het minst nuttig
- Het is erg inefficiënt
- Het creëert een Cartesiaans product
- CROSS-sleutelwoord geïmpliceerd
Voorbeeld
Dus iedereen uit de eerste tabel met elk stukje gegevens uit de tweede tabel zonder enige vorm van matching, dus dit is het ding dat u niet wilt doen.
Zoek naar de clausule FROM waar u meerdere tabellen hebt en er is geen clausule WHERE.
2) Inner Join
Zoekopdrachtoutput:
Je eerste en laatste rijen hebben coördinatiewaarden die betrekking hebben op C2. De middelste rijen komen meestal niet samen. Het laatste eindresultaat biedt alle waarden via de eerste en laatste rijen, maar bevat niet de rij die niet overeenkomt met de middelste sectie.
- Dit is de meest typische JOIN
- Dit benadrukte het relationele karakter van de database
- Hiermee kunnen we de kolomwaarde in een van de tabellen vergelijken met de kolomwaarde in een andere van de tabellen.
- De primaire sleutel in een van de tabellen en een externe sleutel in een van de andere tabellen.
Voorbeeld
Hier is p.person_id onze primaire sleutel in onze personentabel,
email_adres_persoon_id is onze externe sleutel in de e-mailadres tabel.
Laten we de persoonstafel eens bekijken
We hebben die vier rijen. En vervolgens alle overeenkomsten in de e-mailadreslijst.
Dus uiteindelijk zouden er drie mensen moeten zijn, omdat we persoon Shannon hebben die geen e-mailadres heeft
Zoekopdrachtoutput:
We krijgen dus alleen de gegevens als er een overeenkomst is tussen de twee kolommen in elk van de tabellen
3) Buitenste join
- De INNER JOIN houdt zich niet bezig met NULL-waarden
- De OUTER JOIN werkt zelfs wanneer er geen match is in de tweede tabel.
- NULL kolommen als er geen overeenkomst is in de tweede tabel
- FULL OUTER JOIN retourneer alle gekoppelde rijen
- NULL als er geen overeenkomst is in beide tabellen
a) Linker buitenaansluiting
Zoekopdrachtoutput: Je bent zowel initiaal als, laatste rijen hebben coördinerende waarden die betrekking hebben op C2. De middelste rijen komen meestal niet samen. Het laatste eindresultaat zou alle rijen van de eerste tabel kunnen behouden, maar zal in feite de niet-overeenkomende rij door de tweede tabel weglaten.
- Nog een NULL-gerelateerde JOIN
- Alle rijen aan de linkerkant worden geretourneerd
- NULL voor niet-overeenkomende rechter bijzettafel
Voorbeeld
Zoekopdrachtoutput:
U ziet dat er in de tabel Persoon één rij staat die geen waarden bevat in de tabel met e-mailadressen. Dus de LEFT OUTER JOIN zal ons geven.
b) Rechts buiten lid worden
Zoekopdrachtoutput:
Je bent zowel initiaal als, laatste rijen hebben coördinerende waarden die betrekking hebben op C2. De middelste rijen komen meestal niet samen. Het laatste eindresultaat zou alle rijen van de tweede tabel kunnen behouden, maar zal feitelijk de niet-overeenkomende rij door de eerste tabel weglaten.
- Tegenover LEFT OUTER JOIN
- Alle rijen aan de rechterkant worden geretourneerd
- NULL voor een niet-bijpassende linkerzijtafel
Voorbeeld Zoekopdrachtoutput:
We krijgen drie resultaten. Hier is ons JUISTE BUITENKANT-resultaat waar we de rij uit de e-mailadres tabel hebben die geen overeenkomstige rij in de rechter tabel heeft.
4) Volledige deelname aan de buitenwereld
Voorbeeld
Zoekopdrachtoutput:
We kunnen het resultaat van LEFT OUTER JOIN en RECHTS OUTER JOIN combineren
5) Zelf deelnemen
- ZELF is geen trefwoord. Het is gewoon dit idee dat je een tafel op zichzelf kunt zetten
- Vreemd maar soms handig
- Geen speciale syntaxis
- Dezelfde tabel aan de linker- en rechterkant van JOIN
- Handig wanneer een tabel hiërarchische gegevens bevat
Voorbeeld
SELECTEER *
VAN bestellingen
WORD LID VAN abonnementen
AAN orders.subscription_id = subscriptions.subscription_id;
We krijgen de besteltabel en de abonnemententabel en DOE MEE met de tabel met behulp van SELECT alle kolommen.
Om het resultaat te krijgen.
Conclusie:
Joins zijn de manier waarop we het relationele model echt tot leven brengen. Het relationele model gaat over het gescheiden houden van gegevens, genormaliseerd in meerdere tabellen, maar in staat om het weer samen te brengen wanneer we die relaties willen zien. En de verschillende soorten Joins stellen ons in staat om dat op iets verschillende manieren te doen.
Aanbevolen artikelen
Dit is een handleiding voor typen joins in de SQL-server. Hier bespreken we het overzicht en de typen joins in SQL met hun voorbeelden. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie -
- Wat is SQL Server?
- Carrières in SQL Server
- PL SQL-training
- MySQL-operatoren
- Top 6 soorten joins in MySQL met voorbeelden