logo

Typy SQL JOIN

SQL JOIN

SQL Join se používá k načítání nebo kombinování dat (řádků nebo sloupců) ze dvou nebo více tabulek na základě definovaných podmínek.

Tabulka 1: Objednávka

Číslo objednávky Zákaznické identifikační číslo Název objednávky Jméno výrobku
12025 101 Petr ABC
12030 105 Roberte XYX
12032 110 James XYZ
12034 115 Andrew PQR
12035 120 Mathew AAA

Tabulka 2: Zákazník

Zákaznické identifikační číslo Jméno zákazníka Země
100 Chaotický Maxico
101 princ Tchaj-wan
103 Maria Fernandezová krocan
105 Jasmín Paříž
110 Faf Weasel Indonésie
120 Římská raketa Rusko

Nyní máme dva stoly Objednat a Zákazník . Tady je Zákaznické identifikační číslo sloupec společný v obou tabulkách. Napište tedy dotaz SQL pro definování obecného vztahu pro výběr záznamů shod z obou tabulek.

 Select Order.OrderID, Customer.CustomerName, Customer.Country, Order.ProductName from Order INNER JOIN Customer ON Order.CustomerID = Customer.CustomerID; 

Po provedení výše uvedeného SQL dotazy, vytvoří následující výstup:

Číslo objednávky Jméno zákazníka Země Jméno výrobku
12025 princ Tchaj-wan ABC
12030 Jasmín Paříž XYX
12032 Faf Weasel Indonésie XYZ
12035 Římská raketa Rusko AAA

Typy SQL Join

V SQL se používají různé typy spojení:

  1. Vnitřní spojení / Jednoduché spojení
  2. Levé vnější spojení / Levé spojení
  3. Pravé vnější spojení / Pravé spojení
  4. Úplné vnější spojení
  5. Křížové spojení
  6. Vlastní připojení

Vnitřní spojení

Vnitřní spojení se používá k výběru všech odpovídajících řádků nebo sloupců v obou tabulkách nebo pokud je definovaná podmínka platná v SQL.

Syntax:

 Select column_1, column_2, column_3 FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column; 

Vnitřní spojení můžeme reprezentovat pomocí Vennova diagramu takto:

Typy SQL JOIN

Tabulka 1: Studenti

Student_ID Jméno studenta Předmět UčitelID
101 Alexandra Počítačová věda T201
102 Charles Ekonomika T202
103 Tom Cruise Počítačová věda T201
104 Aaron Finch Elektronika T203
105 Seed Bajoff Web design T204
106 Kryštof Anglická literatura T205
107 Džínovina Módní návrhář T206

Tabulka 2: Učitelé

UčitelID Jméno učitele E-mail učitele
T201 Pane Davise [e-mail chráněný]
T202 paní Jonasová [e-mail chráněný]
T201 Pane Davise [e-mail chráněný]
T204 paní Lopezová [e-mail chráněný]
T205 paní Wileyová [e-mail chráněný]
T206 mr Bean [e-mail chráněný]

Máme dvě tabulky: Studenti a Učitelé Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí VNITŘNÍ SPOJENÍ jak následuje:

 Select Student_ID, StudentName, TeacherName, TeacherEmail FROM Students INNER JOIN Teachers ON Students.TeacherID = Teachers.TeacherID; 

Po provedení dotazu vytvoří níže uvedenou tabulku.

Typy SQL JOIN

Přirozené spojení

Je to typ vnitřního typu, který spojuje dvě nebo více tabulek na základě stejného názvu sloupce a v obou tabulkách má stejný datový typ.

Syntax:

 Select * from tablename1 Natural JOIN tablename_2; 

Máme dvě tabulky: Studenti a Učitelé Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí Přírodní JOIN jak následuje:

 Select * from Students Natural JOIN Teachers; 

Po provedení výše uvedeného dotazu vytvoří následující tabulku.

Typy SQL JOIN

PŘIPOJIT SE VLEVO

The PŘIPOJIT SE VLEVO se používá k načtení všech záznamů z levé tabulky (tabulka1) a odpovídajících řádků nebo sloupců z pravé tabulky (tabulka2). Pokud obě tabulky neobsahují žádné odpovídající řádky nebo sloupce, vrátí hodnotu NULL.

Syntax:

 Select column_1, column_2, column(s) FROM table_1 LEFT JOIN table_2 ON table_1.column_name = table_2.column_name; 

Levé spojení můžeme také reprezentovat pomocí Vennova diagramu, a to následovně:

Typy SQL JOIN

Poznámka: V některých databázích je LEFT JOIN také známý jako LEFT OUTER JOIN.

Tabulka 1: Podrobnosti o produktu

ProductID Jméno výrobku Množství
Pro101 Přenosný počítač 56 000
Pro102 mobilní, pohybliví 38 000
Pro103 Sluchátka 5000
Pro104 Televize 25 000
Pro105 iPad 60 000

Tabulka 2: Podrobnosti o zákazníkovi

pružinové moduly
Jméno zákazníka CustomerAddress CustomerAge ProductID
Martin Guptill San Francisco, USA 26 Pro101
James Austrálie 29 Pro103
Ambati Williamson Nový Zéland 27 Pro102
Jofra Archer Jižní Afrika 24 Pro105
Kate Wiley Austrálie dvacet Pro103

Máme dvě tabulky: Detaily produktu a Customer_Details Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí PŘIPOJIT SE VLEVO jak následuje:

 Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID; 

Po provedení dotazu vytvoří následující tabulku.

Typy SQL JOIN

The SPRÁVNÉ PŘIPOJENÍ SE se používá k načtení všech záznamů z pravé tabulky (tabulka2) a odpovídajících řádků nebo sloupců z levé tabulky (tabulka1). Pokud obě tabulky neobsahují žádné odpovídající řádky nebo sloupce, vrátí hodnotu NULL.

Syntax:

 Select column_1, column_2, column(s) FROM table_1 RIGHT JOIN table_2 ON table_1.column_name = table_2.column_name; 

Pravé spojení můžeme také reprezentovat pomocí Vennova diagramu, a to následovně:

Typy SQL JOIN

Poznámka: V některých databázích je RIGHT JOIN také známé jako RIGHT OUTER JOIN.

Tabulka 1: Podrobnosti o produktu

ID Jméno výrobku Množství
Pro101 Přenosný počítač 56 000
Pro102 mobilní, pohybliví 38 000
Pro103 Sluchátka 5000
Pro104 Televize 25 000
Pro105 iPad 60 000

Tabulka 2: Podrobnosti o zákazníkovi

Jméno zákazníka CustomerAddress CustomerAge ProductID
Martin Guptill San Francisco, USA 26 Pro101
James Austrálie 29 Pro103
Ambati Williamson Nový Zéland 27 Pro102
Jofra Archer Jižní Afrika 24 Pro105
Znamení Anglie 29 Pro107
Morgan Anglie dvacet Pro108

Máme dvě tabulky: Detaily produktu a Customer_Details Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí SPRÁVNÉ PŘIPOJENÍ SE jak následuje:

 Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID; 

Po provedení dotazu vytvoří níže uvedenou tabulku.

Typy SQL JOIN

FULL JOIN nebo FULL Outer JOIN:

Je to kombinace výsledků obou PŘIPOJIT SE VLEVO a SPRÁVNÉ PŘIPOJENÍ SE . Spojené tabulky vrátí všechny záznamy z obou tabulek a pokud v tabulce nejsou nalezeny žádné shody, umístí hodnotu NULL. Nazývá se také a ÚPLNÉ VNĚJŠÍ PŘIPOJENÍ .

Syntax:

 Select column_1, column_2, column(s) FROM table_1 FULL JOIN table_2 ON table_1.column_name = table_2.column_name; 

Nebo, ÚPLNÉ VNĚJŠÍ PŘIPOJENÍ

 Select column_1, column_2, column(s) FROM table_1 FULL OUTER JOIN table_2 ON table_1.column_name = table_2.column_name; 

Úplné vnější spojení můžeme také znázornit prostřednictvím Vennova diagramu, a to následovně:

Typy SQL JOIN

Tabulka 1: Podrobnosti o produktu

ID Jméno výrobku Množství
Pro101 Přenosný počítač 56 000
Pro102 mobilní, pohybliví 38 000
Pro103 Sluchátka 5000
Pro104 Televize 25 000
Pro105 iPad 60 000

Tabulka 2: Podrobnosti o zákazníkovi

Jméno zákazníka CustomerAddress CustomerAge ProductID
Martin Guptill San Francisco, USA 26 Pro101
James Austrálie 29 Pro103
Ambati Williamson Nový Zéland 27 Pro102
Jofra Archer Jižní Afrika 24 Pro105
Znamení Anglie 29 Pro107
Morgan Anglie dvacet Pro108

Máme dvě tabulky: Detaily produktu a Customer_Details Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí PLNÝ PŘIPOJTE SE následovně:

 Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details FULL JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID; 

Po provedení dotazu vytvoří níže uvedenou tabulku.

Typy SQL JOIN

Poznámka: MySQL nepodporuje koncepty FULL JOIN, takže ke kombinaci obou tabulek můžeme použít klauzuli UNION ALL.

Zde je syntaxe pro UNION VŠECHNY Doložka ke spojení tabulek.

 Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details LEFT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID UNION ALL Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details RIGHT JOIN Customer_Details ON Product_Details.ID = Customer_Details.ProductID 

Typy SQL JOIN

KŘÍŽOVÉ PŘIPOJENÍ

Je také známý jako KARTÉZSKÉ PŘIPOJENÍ , která vrací kartézský součin dvou nebo více spojených tabulek. The KŘÍŽOVÉ PŘIPOJENÍ vytvoří tabulku, která sloučí každý řádek z první tabulky s každým druhým řádkem tabulky. Do CROSS JOIN není nutné zahrnout žádnou podmínku.

Syntax:

 Select * from table_1 cross join table_2; 

Nebo,

 Select column1, column2, column3 FROM table_1, table_2; 

Tabulka 1: Podrobnosti o produktu

ID Jméno výrobku Množství
Pro101 Přenosný počítač 56 000
Pro102 mobilní, pohybliví 38 000
Pro103 Sluchátka 5000
Pro104 Televize 25 000
Pro105 iPad 60 000

Tabulka 2: Podrobnosti o zákazníkovi

Jméno zákazníka CustomerAddress CustomerAge ProductID
Martin Guptill San Francisco, USA 26 Pro101
James Austrálie 29 Pro103
Ambati Williamson Nový Zéland 27 Pro102
Jofra Archer Jižní Afrika 24 Pro105
Znamení Anglie 29 Pro107
Morgan Anglie dvacet Pro108

Máme dvě tabulky: Detaily produktu a Customer_Details Tabulky. Pojďme napsat SQL dotazy pro připojení k tabulce pomocí PLNÝ PŘIPOJTE SE následovně:

 Select ID, ProductName, CustomerName, CustomerAddress, Amount FROM Product_Details, Customer_Details; 

Po provedení dotazu vytvoří níže uvedenou tabulku.

Typy SQL JOIN

SEBE PŘIPOJTE SE

Je to SELF JOIN, který se používá k vytvoření tabulky spojením sebe sama, protože tam byly dva stoly. Umožňuje dočasné pojmenování alespoň jedné tabulky v příkazu SQL.

Syntax:

 Select column1, column2, column(s) FROM table_1 Tbl1, table_2 Tbl2 WHERE condition; 

stůl 1 a Tbl2 jsou dva různé aliasy tabulky pro stejnou tabulku.

Tabulka 1: Podrobnosti o produktu

ID Jméno výrobku Množství
Pro101 Přenosný počítač 56 000
Pro102 mobilní, pohybliví 38 000
Pro103 Sluchátka 5000
Pro104 Televize 25 000
Pro105 iPad 60 000

Pojďme napsat SQL dotazy pro připojení k tabulce pomocí SEBE PŘIPOJTE SE jak následuje:

Java synchronizace
 Select TB.ID, TB.ProductName FROM Product_Details TB, Product_Details TB2 WHERE TB.AMOUNT <tb2.amount; < pre> <p>After executing the query, it produces the below table. </p> <img src="//techcodeview.com/img/sql-tutorial/44/types-sql-join-12.webp" alt="Types of SQL JOIN"> <hr></tb2.amount;>