Indre join og outer join er to nyttige måder at forbinde databasetabeller og forespørge data fra flere tabeller på. I denne artikel vil vi se på forskellen mellem indre joinforbindelse og ydre joinforbindelse i SQL.
Indre deltagelse
Inner join returnerer rækker fra to eller flere tabeller, hvor mindst én kolonne har samme værdi i alle tabellerne. Hvis der ikke er nogen fælles værdier, returneres ingen rækker.
Her er syntaksen for indre sammenføjning:
select * from table1 INNER JOIN table2 on table1.column_name = table2.column_name; OR select * from table1 JOIN table2 on table1.column_name = table2.column_name;
Outer Join
Outer join returnerer rækker fra to eller flere tabeller, hvor mindst én kolonne har fælles værdi, samt rækker, hvor join-betingelsen mislykkes. Der er 3 typer ydre sammenføjninger:
Venstre ydre forbindelse
I dette tilfælde bibeholdes alle rækker af venstre tabel i resultatet, i tilfælde af at dens sammenføjningsbetingelser matcher andre tabeller, returneres deres kolonneværdier, ellers returneres nulværdier for disse kolonner. Her er syntaksen for venstre ydre sammenføjning.
select * from table1 LEFT OUTER JOIN table2 on table1.column_name = table2.column_name;
Højre ydre samling
I dette tilfælde bibeholdes alle rækker i højre tabel i resultatet, i tilfælde af at dens sammenføjningsbetingelser matcher andre tabeller, returneres deres kolonneværdier, ellers returneres nulværdier for disse kolonner.
Her er syntaksen for højre ydre sammenføjning
select * from table1 RIGHT OUTER JOIN table2 on table1.column_name = table2.column_name;
Fuld ydre forbindelse
I dette tilfælde returneres alle rækker i begge tabeller. Hvis sammenføjningsbetingelsen er opfyldt, udfyldes kolonner ved hjælp af værdierne for begge tabeller. Hvis join-betingelsen mislykkes, udfyldes værdierne for en af tabellerne i kolonner, og resten udfyldes som nuller.
Forskel mellem indre joinforbindelse og ydre joinforbindelse i SQL
Her er de vigtigste forskelle mellem indre sammenføjning vs ydre sammenføjning.
Indre deltagelse
- Det returnerer kun rækker med almindelige kolonneværdier.
- Du kan bruge INNER JOIN- eller JOIN-klausulen. Begge har samme effekt
- Det returnerer null, når der ikke er matchende kolonneværdier mellem to (eller flere) tabeller
- Inner Join er hurtigere end Outer Join
- Det er nyttigt at lave opslag på tværs af flere tabeller
- I matematiske termer returnerer det skæringspunktet mellem to sæt (tabeller)
Outer Join
- Det returnerer værdier fra en eller flere tabeller, selvom der ikke er nogen matchende kolonneværdier
- For rækker uden matchende attributter returnerer det null for resterende kolonner
- Fuld Outer Join og Full Join har samme effekt.
- Det er langsommere end indre sammenføjning
- Det bruges til at få fuldstændig information i to eller flere tabeller
- Fuld ydre joinforbindelse er ikke understøttet i MySQL. Den er tilgængelig i PostgreSQL, SQL Server, Oracle og andre populære databaser.
Har du brug for et rapporteringsværktøj til MySQL? Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!