Oversigt over typer af sammenføjninger i SQL Server
Forbindelsesklausulen, JOIN-nøgleordet er flettet flere tabeller i et resultatsæt. FRA-klausulen bliver nødt til at omfatte alle tabeller. Adskiller hver tabel med et komma WHERE-klausul, der typisk er inkluderet.
Vi kan indsætte det boolske udtryk, der returnerer sandt eller usant, og disse udtryk kan henvise til kolonner i alle tabeller.
Typer af sammenføjninger i SQL Server
Der er forskellige typer sammenføjninger
- KRÆS DETALJER
- INNER JOIN
- YDRE DET FORENEDE
- VENSTRE YDRE Deltager
- HØJRE UDVENDIGT BLI MED
- FULL YDRE JOIN
- SELV JOIN
Lad os forstå hver af disse sammenføjninger detaljeret:
1) Cross Join
- Dette er den enkleste JOIN
- Det returnerer alle rækker fra begge tabeller
- Ingen WHERE-klausul
- Dette er også det mindst nyttige
- Det er meget ineffektivt
- Det skaber et kartesisk produkt
- CROSS nøgleord implicit
Eksempel
Så alle fra den første tabel med hvert stykke data fra den anden tabel uden forsøg på nogen form for matching, så dette er det, du ikke ønsker at gøre.
Se efter FRA-klausul, hvor du har flere tabeller, og der er ingen WHERE-klausul.
2) Indvendig sammenføjning
Forespørgselsudgang:
Dine første og sidste rækker har fået koordinerede værdier involveret i C2. De midterste rækker mødes normalt ikke. Det sidste slutresultat giver alle værdier gennem den indledende såvel som de sidste rækker inkluderer endnu ikke den ikke-matchende midterste sektion.
- Dette er mest typisk JOIN
- Dette understregede databasens relationelle karakter
- Det giver os mulighed for at matche kolonneværdien i en af tabellerne til kolonneværdien i en anden af tabellerne.
- Den primære nøgle i et af tabellerne og en fremmed nøgle i en af de andre tabeller.
Eksempel
Her er p.person_id vores primære nøgle i vores persontabel,
email_adresse_person_id er vores udenlandske nøgle i e-mail-adressetabellen.
Lad os se på personbordet
Vi har de fire rækker. Og derefter alle kampe inde i e-mail-adressetabellen.
Så til sidst skal vi få tre personer, fordi vi har en person, Shannon, der ikke har en e-mail-adresse
Forespørgselsudgang:
Så vi får kun dataene, hvor der er et match mellem de to kolonner i hver af tabellerne
3) Yderforbindelse
- INNER JOIN beskæftiger sig ikke med NULL-værdier
- OUTER JOIN fungerer, selv når der ikke er nogen kamp i den anden tabel.
- NULL-kolonner, hvis der ikke er noget match i den anden tabel
- FULL OUTER JOIN returnerer alle sammenføjede rækker
- NULL når ingen kamp i begge tabeller
a) Venstre yderside
Forespørgselsudgang: Du er såvel indledende som, de sidste rækker har koordinerende værdier involveret i C2. De midterste rækker mødes normalt ikke. Det sidste slutresultat kan holde alle rækker i den første tabel, men vil faktisk udelade den u-matchede række gennem det andet bord.
- En anden NULL-relateret JOIN
- Alle rækker fra venstre side returneres
- NULL til ikke-matchende højre sidebord
Eksempel
Forespørgselsudgang:
Du bemærker, at der er en række i persontabellen, der ikke har værdier i e-mail-adressetabellen. Så LEFT OUTER JOIN vil give os.
b) Højre ydre samling
Forespørgselsudgang:
Du er såvel indledende som, de sidste rækker har koordinerende værdier involveret i C2. De midterste rækker mødes normalt ikke. Det sidste slutresultat kan holde alle rækker i det andet bord, men vil faktisk udelade den u-matchede række gennem det første bord.
- Overfor LEFT OUTER JOIN
- Alle rækker fra højre side returneres
- NULL for et ikke-matchende venstre sidebord
Eksempel Forespørgselsudgang:
Vi får tre resultater. Her er vores RIGHT OUTER JOIN-resultat, hvor vi har rækken fra e-mail-adressetabellen, der ikke har en tilsvarende række i højre tabel.
4) Fuld ydre tilslutning
Eksempel
Forespørgselsudgang:
Vi får kombinere resultatet af LEFT OUTER JOIN og RIGHT OUTER JOIN
5) Self Join
- SELF er ikke et nøgleord. Det er netop denne idé, at du kan skabe et bord over sig selv
- Mærkeligt, men undertiden nyttigt
- Ingen speciel syntaks
- Samme tabel til venstre og højre side af JOIN
- Nyttig, når en tabel indeholder hierarkiske data
Eksempel
VÆLG *
FRA ordrer
JOIN abonnementer
ON orders.subscription_id = abonnementer.subscription_id;
Vi får ordretabellen og abonnementstabellen, og DÆR sammen med tabellen ved at VÆLG alle kolonner.
For at få resultatet.
Konklusion:
Forbindelser er den måde, vi virkelig får den relationelle model til at komme til live. Den relationelle model handler om at have data adskilt, normaliseret i flere tabeller, men i stand til at bringe dem sammen igen, når vi vil se disse forhold. Og de forskellige slags sammenføjninger tillader os at gøre det på lidt forskellige måder.
Anbefalede artikler
Dette har været en guide til Typer af sammenføjninger på SQL-serveren. Her diskuterer vi oversigten og typer sammenføjninger i SQL med deres eksempler. Du kan også gennemgå vores andre foreslåede artikler for at lære mere -
- Hvad er SQL Server?
- Karrierer i SQL Server
- PL SQL-træning
- MySQL-operatører
- Top 6 typer sammenføjninger i MySQL med eksempler