In deze tutorial leg ik het verschil uit tussen SQL INNER JOIN en OUTER JOIN met voorbeelden. Als je dit onder de knie hebt, wil je misschien onze cursus Joining Data in SQL volgen, die andere interessante joins behandelt, zoals SELF JOIN en CROSS JOIN, en ook grotere concepten zoals verzamelingenleer.
Kort antwoord
INNER JOIN retourneert alleen de overeenkomende rijen tussen tabellen op basis van een gemeenschappelijke kolom en sluit niet-overeenkomende rijen uit. De query hieronder laat bijvoorbeeld bestellingen met klantgegevens zien alleen wanneer er een overeenkomst is.
-- Inner Join: Returns only matching rows from both tablesSELECT o.OrderID, c.CustomerName
FROM Orders o
INNERJOIN Customers c ON o.CustomerID = c.CustomerID;Mogelijk gemaakt door
OUTER JOIN omvat zowel overeenkomende rijen als niet-overeenkomende rijen uit één of beide tabellen. De query hieronder retourneert alle klanten, inclusief degenen zonder bestellingen.
-- Left Outer Join: Returns all rows from Customers and matching rows from OrdersSELECT c.CustomerName, o.OrderID
FROM Customers c
LEFTJOIN Orders o ON c.CustomerID = o.CustomerID;Mogelijk gemaakt door
Van dichtbij: SQL INNER JOIN en OUTER JOIN
Laten we nu SQL INNER JOIN en OUTER JOIN van dichterbij bekijken, één voor één. Terwijl we elk bekijken, neem de volgende twee tabellen in gedachten:
Voorbeeld van employees-tabel. Afbeelding door auteur.
Voorbeeld van departments-tabel. Afbeelding door auteur.
Hoe INNER JOIN werkt
Een INNER JOIN haalt alleen de rijen op met een overeenkomst in beide tabellen op basis van de opgegeven voorwaarde.
De volgende query selecteert employee_id, demployee_name, department_name en salary en retourneert vervolgens de rijen waar department_id bestaat.
-- Example: Get employees with matching departmentsSELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
INNERJOIN departments
-- Returns only employees assigned to a departmentON employees.department_id = departments.department_id;Mogelijk gemaakt door
Voorbeeld van een samengevoegde tabel met SQL INNER JOIN. Afbeelding door auteur.
Hoe OUTER JOIN werkt
De OUTER JOIN neemt niet-overeenkomende rijen op uit één of beide tabellen, afhankelijk van het type OUTER JOIN dat wordt gebruikt.
LEFT OUTER JOIN (LEFT JOIN)
De LEFT OUTER JOIN retourneert alle records uit de linkertabel en de overeenkomende records uit de rechtertabel. Als er geen overeenkomst is, worden NULL-waarden geretourneerd voor kolommen uit de rechtertabel.
Het volgende voorbeeld haalt alle records op uit de tabel employees, ook waar er geen overeenkomende records zijn. Ontbrekende department_name voor medewerkers wordt geretourneerd als NULL.
-- Get all employees, even those without a departmentSELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
LEFTJOIN departments
ON employees.department_id = departments.department_id;Mogelijk gemaakt door
Voorbeeld van een tabel gekoppeld met SQL left outer join. Afbeelding door auteur.
LEFT JOIN en LEFT OUTER JOIN worden in SQL door elkaar gebruikt, aangezien beide queries alle rijen uit de linkertabel en de overeenkomende rijen uit de rechtertabel ophalen.
RIGHT OUTER JOIN (RIGHT JOIN)
De RIGHT OUTER JOIN retourneert alle records uit de rechtertabel en de overeenkomende records uit de linkertabel. Niet-overeenkomende rijen in de linkertabel leveren NULL op.
De query hieronder retourneert alle records uit de tabel departments, ook waar er geen overeenkomende medewerkers zijn.
-- Get all departments, even those without employeesSELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
RIGHTJOIN departments
ON employees.department_id = departments.department_id;Mogelijk gemaakt door
Voorbeeld van een tabel gekoppeld met SQL Right outer join. Afbeelding door auteur.
FULL OUTER JOIN
De FULL OUTER JOIN combineert resultaten van zowel left als right outer joins. Het retourneert alle records uit beide tabellen en vult NULL in waar geen overeenkomst bestaat.
De query hieronder retourneert alle records uit de tabellen employees en departments, ook met niet-overeenkomende rijen.
-- Combine all employees and departmentsSELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
FULLJOIN departments
ON employees.department_id = departments.department_id;Mogelijk gemaakt door
Voorbeeld van een tabel gekoppeld met SQL Full outer join. Afbeelding door auteur.
INNER JOIN vs. OUTER JOIN: Belangrijkste verschillen
INNER JOIN en OUTER JOIN verschillen fundamenteel in hoe ze niet-overeenkomende rijen behandelen bij het samenvoegen van tabellen. Deze verschillen begrijpen is belangrijk om het juiste jointype voor je databasequeries te kiezen. Laten we ze vergelijken.
Wat INNER JOIN retourneert
INNER JOIN retourneert alleen de rijen met overeenkomende waarden in beide tabellen. Dit type join gebruik je wanneer je gegevens in beide datasets nodig hebt.
De volgende query haalt records op uit employees met overeenkomende rijen uit de tabel departments.
-- Example: Get employees with matching departmentsSELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
INNERJOIN departments
-- Returns only employees assigned to a departmentON employees.department_id = departments.department_id;Mogelijk gemaakt door
Voorbeeld van een tabel gekoppeld met SQL INNER JOIN. Afbeelding door auteur.
Wat OUTER JOIN retourneert
OUTER JOIN omvat niet-overeenkomende rijen uit één of beide tabellen, afhankelijk van het type OUTER JOIN. Zo retourneert de LEFT OUTER JOIN alle rijen uit de linkertabel en de overeenkomende rijen uit de rechtertabel. Niet-overeenkomende rijen uit de rechtertabel krijgen NULL-waarden.
De volgende query haalt medewerkersrecords op, ook van degenen zonder afdeling.
-- Get all employees, even those without a departmentSELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
LEFTJOIN departments
ON employees.department_id = departments.department_id;Mogelijk gemaakt door
Voorbeeld van gegevens opgehaald met SQL LEFT OUTER JOIN. Afbeelding door auteur.
Wanneer gebruik je SQL INNER JOIN en OUTER JOIN
INNER JOIN en OUTER JOIN verschillen ook in hun praktische gebruiksscenario’s bij het ophalen van gegevens.
Wanneer gebruik je INNER JOIN
INNER JOIN is het meest effectief wanneer je alleen de overlappende gegevens uit twee tabellen nodig hebt. Je kunt bijvoorbeeld INNER JOIN gebruiken bij de analyse van verkoopgegevens om producten te vinden die verkocht zijn, zoals wanneer zowel product- als verkooptabellen overeenkomende items hebben.
Wanneer gebruik je OUTER JOIN
OUTER JOIN is geschikt wanneer je een volledige dataset wilt retourneren, inclusief niet-overeenkomende rijen. Bijvoorbeeld bij het maken van een rapport met alle medewerkers, inclusief degenen zonder afdelingsindeling, of alle afdelingen, inclusief die zonder medewerkers.
Conclusie
Het verschil tussen INNER JOIN en OUTER JOIN begrijpen is belangrijk voor het schrijven van efficiënte queries. Deze technieken leren helpt ook bij het optimaliseren van queries voor snellere gegevensopvraging. Blijf oefenen om meer vaardigheden in databasemanagement op te doen.
Ik raad je aan om onze carrièreroute Associate Data Analyst in SQL te proberen om een goede data-analist te worden. Onze cursus Reporting in SQL helpt je ook om bedreven te worden in het bouwen van complexe rapporten en dashboards voor effectieve datavisualisatie. Bereid je je voor op een sollicitatiegesprek waarin je je SQL-vaardigheden moet laten zien? Bekijk dan onze blog, 20 Top SQL Joins Interview Questions, om je goed voor te bereiden.
Technical writer voor data science met praktische ervaring in data-analyse, business intelligence en data science. Ik schrijf praktische, op de industrie gerichte content over SQL, Python, Power BI, Databricks en data engineering, gebaseerd op analytisch werk in de echte wereld. Mijn schrijfwerk slaat een brug tussen technische diepgang en zakelijke impact, en helpt professionals om data om te zetten in onderbouwde beslissingen.
\n
\n
\n
\n
SQL INNER JOIN en OUTER JOIN: veelgestelde vragen
Wat is het verschil tussen INNER JOIN en OUTER JOIN in SQL?⌄
INNER JOIN retourneert alleen overeenkomende rijen uit beide tabellen, terwijl OUTER JOIN ook niet-overeenkomende rijen opneemt, waarbij NULL de gaten opvult wanneer er geen overeenkomende gegevens zijn.
Wanneer moet ik een INNER JOIN gebruiken in SQL?⌄
Gebruik een INNER JOIN wanneer je alleen de rijen wilt ophalen met overeenkomende waarden in beide tabellen.
Wat zijn de OUTER JOIN-typen in SQL?⌄
De OUTER JOIN-typen zijn LEFT OUTER JOIN, RIGHT OUTER JOIN en FULL OUTER JOIN.
Hoe werkt een LEFT OUTER JOIN in SQL?⌄
Een left outer join retourneert alle rijen uit de linkertabel, de overeenkomende rijen uit de rechtertabel en de niet-overeenkomende rijen uit de linkertabel.
Wat is een FULL OUTER JOIN in SQL?⌄
Een FULL OUTER JOIN retourneert alle rijen uit beide tabellen, inclusief niet-overeenkomende rijen uit elke tabel.
In deze tutorial leg ik het verschil uit tussen SQL
INNER JOINenOUTER JOINmet voorbeelden. Als je dit onder de knie hebt, wil je misschien onze cursus Joining Data in SQL volgen, die andere interessante joins behandelt, zoalsSELF JOINenCROSS JOIN, en ook grotere concepten zoals verzamelingenleer.Kort antwoord
INNER JOINretourneert alleen de overeenkomende rijen tussen tabellen op basis van een gemeenschappelijke kolom en sluit niet-overeenkomende rijen uit. De query hieronder laat bijvoorbeeld bestellingen met klantgegevens zien alleen wanneer er een overeenkomst is.OUTER JOINomvat zowel overeenkomende rijen als niet-overeenkomende rijen uit één of beide tabellen. De query hieronder retourneert alle klanten, inclusief degenen zonder bestellingen.Van dichtbij: SQL INNER JOIN en OUTER JOIN
Laten we nu SQL
INNER JOINenOUTER JOINvan dichterbij bekijken, één voor één. Terwijl we elk bekijken, neem de volgende twee tabellen in gedachten:Voorbeeld van employees-tabel. Afbeelding door auteur.
Voorbeeld van departments-tabel. Afbeelding door auteur.
Hoe INNER JOIN werkt
Een
INNER JOINhaalt alleen de rijen op met een overeenkomst in beide tabellen op basis van de opgegeven voorwaarde.De volgende query selecteert
employee_id,demployee_name,department_nameensalaryen retourneert vervolgens de rijen waardepartment_idbestaat.Voorbeeld van een samengevoegde tabel met SQL INNER JOIN. Afbeelding door auteur.
Hoe OUTER JOIN werkt
De
OUTER JOINneemt niet-overeenkomende rijen op uit één of beide tabellen, afhankelijk van het typeOUTER JOINdat wordt gebruikt.LEFT OUTER JOIN (LEFT JOIN)
De
LEFT OUTER JOINretourneert alle records uit de linkertabel en de overeenkomende records uit de rechtertabel. Als er geen overeenkomst is, wordenNULL-waarden geretourneerd voor kolommen uit de rechtertabel.Het volgende voorbeeld haalt alle records op uit de tabel
employees, ook waar er geen overeenkomende records zijn. Ontbrekendedepartment_namevoor medewerkers wordt geretourneerd alsNULL.Voorbeeld van een tabel gekoppeld met SQL left outer join. Afbeelding door auteur.
LEFT JOIN en LEFT OUTER JOIN worden in SQL door elkaar gebruikt, aangezien beide queries alle rijen uit de linkertabel en de overeenkomende rijen uit de rechtertabel ophalen.
RIGHT OUTER JOIN (RIGHT JOIN)
De
RIGHT OUTER JOINretourneert alle records uit de rechtertabel en de overeenkomende records uit de linkertabel. Niet-overeenkomende rijen in de linkertabel leverenNULLop.De query hieronder retourneert alle records uit de tabel
departments, ook waar er geen overeenkomende medewerkers zijn.Voorbeeld van een tabel gekoppeld met SQL Right outer join. Afbeelding door auteur.
FULL OUTER JOIN
De
FULL OUTER JOINcombineert resultaten van zowel left als right outer joins. Het retourneert alle records uit beide tabellen en vultNULLin waar geen overeenkomst bestaat.De query hieronder retourneert alle records uit de tabellen
employeesendepartments, ook met niet-overeenkomende rijen.Voorbeeld van een tabel gekoppeld met SQL Full outer join. Afbeelding door auteur.
INNER JOIN vs. OUTER JOIN: Belangrijkste verschillen
INNER JOINenOUTER JOINverschillen fundamenteel in hoe ze niet-overeenkomende rijen behandelen bij het samenvoegen van tabellen. Deze verschillen begrijpen is belangrijk om het juiste jointype voor je databasequeries te kiezen. Laten we ze vergelijken.Wat INNER JOIN retourneert
INNER JOINretourneert alleen de rijen met overeenkomende waarden in beide tabellen. Dit type join gebruik je wanneer je gegevens in beide datasets nodig hebt.De volgende query haalt records op uit
employeesmet overeenkomende rijen uit de tabeldepartments.Voorbeeld van een tabel gekoppeld met SQL INNER JOIN. Afbeelding door auteur.
Wat OUTER JOIN retourneert
OUTER JOINomvat niet-overeenkomende rijen uit één of beide tabellen, afhankelijk van het typeOUTER JOIN. Zo retourneert deLEFT OUTER JOINalle rijen uit de linkertabel en de overeenkomende rijen uit de rechtertabel. Niet-overeenkomende rijen uit de rechtertabel krijgen NULL-waarden.De volgende query haalt medewerkersrecords op, ook van degenen zonder afdeling.
Voorbeeld van gegevens opgehaald met SQL LEFT OUTER JOIN. Afbeelding door auteur.
Wanneer gebruik je SQL INNER JOIN en OUTER JOIN
INNER JOINenOUTER JOINverschillen ook in hun praktische gebruiksscenario’s bij het ophalen van gegevens.Wanneer gebruik je INNER JOIN
INNER JOINis het meest effectief wanneer je alleen de overlappende gegevens uit twee tabellen nodig hebt. Je kunt bijvoorbeeldINNER JOINgebruiken bij de analyse van verkoopgegevens om producten te vinden die verkocht zijn, zoals wanneer zowel product- als verkooptabellen overeenkomende items hebben.Wanneer gebruik je OUTER JOIN
OUTER JOINis geschikt wanneer je een volledige dataset wilt retourneren, inclusief niet-overeenkomende rijen. Bijvoorbeeld bij het maken van een rapport met alle medewerkers, inclusief degenen zonder afdelingsindeling, of alle afdelingen, inclusief die zonder medewerkers.Conclusie
Het verschil tussen
INNER JOINenOUTER JOINbegrijpen is belangrijk voor het schrijven van efficiënte queries. Deze technieken leren helpt ook bij het optimaliseren van queries voor snellere gegevensopvraging. Blijf oefenen om meer vaardigheden in databasemanagement op te doen.Ik raad je aan om onze carrièreroute Associate Data Analyst in SQL te proberen om een goede data-analist te worden. Onze cursus Reporting in SQL helpt je ook om bedreven te worden in het bouwen van complexe rapporten en dashboards voor effectieve datavisualisatie. Bereid je je voor op een sollicitatiegesprek waarin je je SQL-vaardigheden moet laten zien? Bekijk dan onze blog, 20 Top SQL Joins Interview Questions, om je goed voor te bereiden.