SQL JOIN og forskjellige typer JOIN-er

Hva er en SQL JOIN og hva er forskjellige typer?

En illustrasjon fra W3schools:


INNER JOIN - Bare poster som samsvarer med betingelsen i begge tabellene]1


LEFT JOIN - Alle poster fra tabell 1 i forbindelse med poster som samsvarer med betingelsen i tabell 2]2


RIGHT JOIN - Alle poster fra tabell 2 i forbindelse med poster fra tabell 1 som samsvarer med betingelsen]3


FULL OUTER JOIN - Kombinasjon av både venstre og høyre ytre sammenføyning som samsvarer med ON-klausulen, men som bevarer begge tabellene]4


Kommentarer (18)
Løsning

Hva er SQL JOIN?

SQL JOIN er en metode for å hente data fra to eller flere databasetabeller.

Hva er de forskjellige SQL JOINene?

Det finnes totalt fem JOINer. De er:

  1. JOIN or INNER JOIN
  2. OUTER JOIN

     2.1 LEFT OUTER JOIN or LEFT JOIN
     2.2 RIGHT OUTER JOIN or RIGHT JOIN
     2.3 FULL OUTER JOIN or FULL JOIN

  3. NATURAL JOIN
  4. CROSS JOIN
  5. SELF JOIN
  1. JOIN eller INNER JOIN:

I denne typen JOIN får vi alle poster som samsvarer med betingelsen i begge tabeller, og poster i begge tabeller som ikke samsvarer, rapporteres ikke.

Med andre ord er INNER JOIN basert på det enkle faktum at: KUN de samsvarende oppføringene i BEGGE tabellene SKAL vises.

Merk at en JOIN uten andre JOIN-nøkkelord (som INNER, OUTER, LEFT osv.) er en INNER JOIN. Med andre ord, JOIN er et syntaktisk sukker for INNER JOIN (se: https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).

  1. OUTER JOIN:

OUTER JOIN` henter

Enten, de matchede radene fra den ene tabellen og alle radene i den andre tabellen. eller alle rader i alle tabeller (det spiller ingen rolle om det er samsvar eller ikke).

Det finnes tre typer Outer Join:

2.1 LEFT OUTER JOIN eller LEFT JOIN.

Denne sammenføyningen returnerer alle radene fra den venstre tabellen i forbindelse med de samsvarende radene fra den høyre tabell. Hvis det ikke er noen kolonner som samsvarer i den høyre tabellen, returneres NULL-verdier.

2.2 RIGHT OUTER JOIN eller RIGHT JOIN****.

Denne JOIN returnerer alle radene fra den høyre tabellen sammen med de samsvarende radene fra den venstre tabellen. venstre tabell. Hvis det ikke er noen kolonner som samsvarer i den venstre tabellen, returneres NULL-verdier.

2.3 FULL OUTER JOIN eller FULL JOIN.

Denne JOIN kombinerer LEFT OUTER JOIN og RIGHT OUTER JOIN. Den returnerer rader fra en av tabellene når betingelsene er oppfylt, og returnerer NULL-verdien når det ikke er samsvar.

Med andre ord er OUTER JOIN basert på det faktum at: KUN de samsvarende oppføringene i EN AV tabellene (RIGHT eller LEFT) eller BEGGE tabellene (FULL) SKAL være oppført.

Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.
  1. NATURAL JOIN:

Det er basert på de to betingelsene:

  1. JOIN er laget på alle kolonnene med samme navn for likhet.
  2. Fjerner dupliserte kolonner fra resultatet.

Dette ser ut til å være mer av teoretisk karakter, og som et resultat (sannsynligvis) de fleste DBMS-er ikke engang gidder å støtte dette.

  1. CROSS JOIN:

Det er det kartesiske produktet av de to involverte tabellene. Resultatet av en CROSS JOIN vil ikke gi mening i de fleste situasjoner. i de fleste situasjoner. Dessuten trenger vi ikke dette i det hele tatt (eller trenger minst, for å være presis).

  1. SELF JOIN:

Det er ikke en annen form for JOIN, snarere er det en JOIN (INNER, OUTER osv.) av en tabell til seg selv.

JOIN-er basert på operatorer

Avhengig av operatoren som brukes for en JOIN-klausul, kan det være to typer JOINer. Disse er

  1. Equi JOIN

  2. Theta JOIN

  3. Equi JOIN:

For hvilken som helst JOIN-type (INNER, OUTER osv.), hvis vi KUN bruker likhetsoperatoren (=), sier vi at JOIN er en EQUI JOIN.

  1. Theta JOIN:

Dette er det samme som EQUI JOIN, men det tillater alle andre operatorer som >, = osv.

Mange anser både EQUI JOIN og Theta JOIN som lik INNER, OUTER, > etc JOIN. etc JOIN. Men jeg tror sterkt at det er en feil og gjør det ideer vage. Fordi INNER JOIN, OUTER JOIN etc er alle forbundet med tabellene og deres data, mens EQUI JOIN og THETA JOIN er kun forbundet med operatørene vi bruker i førstnevnte.

Igjen, det er mange som anser NATURAL JOIN som en slags "merkelig " EQUI JOIN. Det er faktisk sant, på grunn av den første betingelse jeg nevnte for NATURAL JOIN. Imidlertid trenger vi ikke' ikke å begrense det bare til NATURAL JOIN alene. INNER JOIN, OUTER JOIN, osv. etc kan også være en EQUI JOIN.

Kommentarer (3)

Definisjon:


JOINS er en måte å søke på data som kombineres fra flere tabeller samtidig.

Typer av JOINS:


Når det gjelder RDBMS er det 5 typer sammenføyninger:

  • Equi-Join: Kombinerer vanlige poster fra to tabeller basert på likhetstilstand. Teknisk sett gjøres Join ved å bruke likhetsoperatoren (=) for å sammenligne verdiene til primærnøkkelen i en tabell og fremmednøkkelverdiene i en annen tabell, og dermed inkluderer resultatsettet felles (matchede) poster fra begge tabellene. For implementering, se INNER-JOIN.

  • Natural-Join: Dette er en forbedret versjon av Equi-Join, der SELECT operasjonen utelater dupliserte kolonner. For implementering, se INNER-JOIN.

  • Non-Equi-Join: Det motsatte av Equi-join der sammenføyningsbetingelsen er andre operatorer enn equal operator(=), f.eks. !=, =, >, < eller BETWEEN osv. For implementering, se INNER-JOIN.

  • Self-Join:: En tilpasset oppførsel av sammenføyning der en tabell kombineres med seg selv; Dette er vanligvis nødvendig for spørring av selvrefererende tabeller (eller Unary-relasjonsenhet). For implementering, se INNER-JOINs.

  • Kartesisk produkt:** Det krysskobler alle postene i begge tabellene uten noen betingelse. Teknisk sett returnerer den resultatsettet av en spørring uten WHERE-klausul.

I henhold til SQL-bekymring og fremgang er det tre typer sammenføyninger, og alle RDBMS-sammenføyninger kan oppnås ved hjelp av disse typer sammenføyninger.

  1. INNER-JOIN: Den fusjonerer (eller kombinerer) matchede rader fra to tabeller. Matchingen gjøres basert på vanlige kolonner i tabeller og deres sammenligningsoperasjon. Hvis likhetsbasert tilstand da: EQUI-JOIN utført, ellers Non-EQUI-Join.

  2. OUTER-JOIN: Den slår sammen (eller kombinerer) matchede rader fra to tabeller og umatchede rader med NULL-verdier. Kan imidlertid tilpasse valg av umatchede rader, f.eks. velge umatchet rad fra første tabell eller andre tabell etter undertyper: LEFT OUTER JOIN og RIGHT OUTER JOIN.

    2.1. LEFT Outer JOIN (også kjent som LEFT-JOIN): Returnerer bare matchede rader fra to tabeller og umatchede fra LEFT-tabellen (dvs. den første tabellen).

    2.2. RIGHT Outer JOIN (også kjent som RIGHT-JOIN): Returnerer bare matchede rader fra to tabeller og umatchede fra HØYRE tabell.

    2.3. FULL OUTER JOIN (også kjent som OUTER JOIN): Returnerer matchede og umatchede fra begge tabeller.

  3. CROSS-JOIN: Denne koblingen slår ikke sammen/kombinerer, men utfører i stedet kartesisk produkt.

[skriv inn bildebeskrivelse her][1]]. Merk: Self-JOIN kan oppnås ved enten INNER-JOIN, OUTER-JOIN og CROSS-JOIN basert på krav, men tabellen må sammenføyes med seg selv.

[For mer informasjon:][2] [For mer informasjon:][2] **[For mer informasjon:][3

Eksempler:

1.1: INNER-JOIN: Equi-join-implementering.

SELECT  *
FROM Table1 A 
 INNER JOIN Table2 B ON A. =B.;

1.2: INNER-JOIN: Implementering av Natural-JOIN **1.3: INNER-JOIN: Implementering av Natural-JOIN

Select A.*, B.Col1, B.Col2          --But no B.ForeignKeyColumn in Select
 FROM Table1 A
 INNER JOIN Table2 B On A.Pk = B.Fk;

1.3: INNER-JOIN med NON-Equi-join-implementering**.


Select *
 FROM Table1 A INNER JOIN Table2 B On A.Pk 
Kommentarer (2)