V SQL sa LEFT JOIN aj LEFT OUTER JOIN používajú na kombinovanie údajov z dvoch alebo viacerých tabuliek na základe súvisiaceho stĺpca, ale v podstate ide o rovnakú operáciu a nie je medzi nimi žiadny praktický rozdiel. Kľúčové slovo OUTER je voliteľné vo väčšine databázových systémov vrátane populárnych systémov ako MySQL, PostgreSQL a SQL Server.

Ľavé spojenie alebo Ľavé vonkajšie spojenie
Ľavé pripojenie
A SQL operácia, ktorá kombinuje dve tabuľky, pričom zobrazuje všetky riadky z ľavej tabuľky a zodpovedajúce riadky z pravej tabuľky. Ak sa v pravej tabuľke nenachádza žiadna zhoda, zobrazí sa NULOVÝ hodnoty.
Syntax
VYBERTE * Z tabuľky 1
LEFT JOIN Table2 ON Table1.columnName = Table2.columnName;
Ľavý vonkajší spoj
Ďalšia operácia SQL, ktorá je koncepčne identická s LEFT JOIN. Tiež kombinuje tabuľky, pričom zobrazuje všetky riadky z ľavej tabuľky a zodpovedajúce riadky z pravej tabuľky. Ak sa v pravej tabuľke nenachádza žiadna zhoda, zobrazí sa hodnoty NULL.
Syntax
VYBERTE * Z tabuľky 1
LEFT OUTTER JOIN Table2 ON Table1.columnName = Table2.columnName;
LEFT JOIN a LEFT OUTER JOIN sú v podstate to isté v SQL. Obidve kombinujú údaje z dvoch tabuliek, pričom zobrazujú všetky riadky z ľavej tabuľky a zodpovedajúce riadky z pravej tabuľky. Ak sa v pravej tabuľke nenachádza žiadna zhoda, zobrazia sa hodnoty NULL. Jediný rozdiel je v terminológii: LEFT JOIN sa používa v niektorých databázach, napr MySQL , zatiaľ čo LEFT OUTER JOIN sa používa v iných, ako je SQL Server. Hlbším spôsobom System.out.print() používaný v jave, súčasne print používaný v pythone, ale oba odrážajú rovnaký výstup. Ide teda len o to, ktorý výraz preferuje váš databázový systém, ale výsledok je rovnaký.
Pred ponorením sa do príkladov vytvorte údaje, ktoré sú potrebné na vykonanie ľavého vonkajšieho spojenia a ľavého spojenia.
Krok 1: Vytvorte databázu
create database geeksforgeeks; use geeksforgeeks;>
Krok 2: Vytvorte tabuľku s názvom athelete
create table atheletes(Id int, Name varchar(20), AtheleteNO int, primary key(Id) );>
Krok 3: Vložte hodnoty do tabuľky athelete
INSERT INTO atheletes (Id, Name, AtheleteNO) VALUES (1, 'abisheik', 27); INSERT INTO atheletes (Id, Name, AtheleteNO) VALUES (2, 'Niyas', 27); INSERT INTO atheletes (Id, Name, AtheleteNO) VALUES (3, 'Joseph', 29); INSERT INTO atheletes (Id, Name, AtheleteNO) VALUES (4, 'Juan', 24);>
Krok 4: Vytvorte tabuľku s názvom Body
CREATE TABLE Points(ID INT, Score INT,AtheleteID INT, PRIMARY KEY (ID) );>
Krok 5: Vložte hodnoty do tabuľky Body
návrhové vzory v jazyku Java
INSERT INTO Points (ID, Score, AtheleteID) VALUES (1, 270, 1); INSERT INTO Points (ID, Score, AtheleteID) VALUES (2, 297, 2); INSERT INTO Points (ID, Score, AtheleteID) VALUES (3, 210, 3); INSERT INTO Points (ID, Score, AtheleteID) VALUES (4, 180, 4);>
Teraz sme úspešne vytvorili tabuľku athelete a body pre operáciu spájania.
Príklad:
Použitím ľavého vonkajšieho spojenia sa dotaz vykoná.
Dopyt
SELECT * FROM atheletes LEFT OUTER JOIN Points ON atheletes.ID = Points.AtheleteID;>
Výkon
Id | názov | Atlét č | ID | skóre | AtheleteID |
---|---|---|---|---|---|
1 | Abisheik | 27 | 1 | 270 | 1 |
2 | Niyas | 27 | 2 | 297 | 2 |
3 | Jozefa | 29 | 3 | 210 | 3 |
4 numpy mriežka | Juan | 24 | 4 | 180 | 4 |
Príklad:
Použitím ľavého spojenia sa dotaz vykoná.
Dopyt
SELECT * FROM atheletes LEFT JOIN Points ON atheletes.ID = Points.AtheleteID;>
Výkon
Id | názov | Atlét č | ID | skóre | AtheleteID |
---|---|---|---|---|---|
1 | Abisheik | 27 prepojený zoznam java | 1 | 270 | 1 |
2 | Niyas | 27 | 2 | 297 | 2 |
3 | Jozefa oops koncepty v jave | 29 | 3 | 210 | 3 |
4 | Juan | 24 | 4 | 180 | 4 |
Záver
V SQL sú LEFT JOIN a LEFT OUTER JOIN v podstate rovnaké operácie, líšia sa len terminológiou. Obe operácie kombinujú údaje z dvoch tabuliek, pričom zobrazujú všetky riadky z ľavej tabuľky a zodpovedajúce riadky z pravej tabuľky, pričom zobrazujú hodnoty NULL pre nezhodné riadky. Bez ohľadu na termín použitý vo vašom databázovom systéme zostáva výsledok rovnaký.
Časté otázky týkajúce sa pripojenia vľavo vs pripojenia vľavo
Otázka 1: Existuje nejaký výkonnostný rozdiel medzi LEFT JOIN a LEFT OUTER JOIN?
odpoveď:
Nie, nie je tam žiadny výkonnostný rozdiel. Tieto pojmy sú zameniteľné a optimalizátor databázy s nimi zaobchádza rovnakým spôsobom.
Q.2: Môžem použiť LEFT JOIN alebo LEFT OUTER JOIN s viac ako dvoma stolmi?
odpoveď:
Áno, tieto operácie spojenia môžete použiť s viacerými tabuľkami rozšírením syntaxe, špecifikovaním podmienok spojenia pre každú tabuľku.
Otázka 3: Podporujú všetky databázové systémy LEFT JOIN aj LEFT OUTER JOIN?
odpoveď:
Najpoužívanejšie databázové systémy, vrátane MySQL, PostgreSQL a SQL Server, podporujú LEFT JOIN aj LEFT OUTER JOIN. Je však nevyhnutné skontrolovať kompatibilitu dokumentácie k vašej konkrétnej databáze.
Otázka 4: Čo sa stane, ak použijem LEFT JOIN alebo LEFT OUTER JOIN bez zadania podmienky spojenia?
odpoveď:
Použitie týchto operácií spojenia bez podmienky spojenia bude mať za následok karteziánsky produkt, kde sa každý riadok z ľavej tabuľky kombinuje s každým riadkom z pravej tabuľky, čo môže viesť k veľkej a neefektívnej množine výsledkov.
Otázka 5: Existujú aj iné typy spojení SQL?
odpoveď:
Áno, SQL podporuje rôzne typy spojení, vrátane INNER JOIN, RIGHT JOIN, FULL OUTER JOIN a CROSS JOIN, pričom každé slúži na iné účely pri kombinovaní údajov z viacerých tabuliek.