V tomto článku se seznámíme s konceptem INNER JOIN a jak jej používat v SQL s klauzulí WHERE.
Co je INNER JOIN v SQL?
Vnitřní spojení je typ spojení v SQL. Inner Join v SQL je široce používané spojení. Toto spojení vrátí pouze ty řádky, které jsou společné v obou tabulkách. Vnitřní spojení se používá ke spojení dvou tabulek.
Syntaxe vnitřního spojení v SQL:
VYBERTE tabulku1.název_sloupce1, název_tabulky1.název_sloupce2, název_tabulky2.název_sloupce1,název_tabulky2.název_sloupce2 Z TAB.Table1.column =table2.column je společný sloupec, který udržuje vztah nadřazeného potomka mezi těmito dvěma tabulkami.
Existuje několik kroků, které musíme použít ve vnitřním spojení v dotazu SQL:
1. Vytvořte novou databázi nebo použijte existující databázi výběrem databáze pomocí klíčového slova USE následovaného názvem databáze.
2. Vytvořte novou tabulku ve vybrané databázi nebo můžete použít již vytvořenou tabulku.
3. Pokud je tabulka nově vytvořena, vložte záznamy do nově vytvořené databáze pomocí dotazu INSERT.
4. Prohlédněte si vložená data pomocí dotazu SELECT bez dotazu Inner Join.
5 Nyní jsme připraveni použít Inner Join v SQL dotazech.
Krok 1:Vytvořte novou databázi nebo použijte již vytvořenou databázi.
Již jsem vytvořil databázi. Použiji svůj existující vytvořený název databáze, Společnost.
USE Company;Společnost je název databáze.
Ti, kteří si databázi nevytvořili, se při vytváření databáze řídí následujícím dotazem:
CREATE DATABASE název_databáze;Po vytvoření databáze vyberte databázi pomocí klíčového slova USE následovaného názvem databáze.
Krok 2:Vytvořte novou tabulku nebo použijte již existující tabulku:
Již jsem vytvořil tabulku. Při provádění dotazu Inner Join použiji existující tabulku s názvem Zaměstnanci a manažer.
Chcete-li vytvořit novou tabulku, postupujte podle syntaxe CREATE TABLE:
CREATE TABLE název_tabulky(
název_sloupce1 datový typ (velikost sloupce),
název_sloupce2 datový typ (velikost sloupce),
název_sloupce3 datový typ (velikost sloupce) )
);Krok 3:Vložte záznamy do nově vytvořené tabulky pomocí dotazu INSERT
Pro vložení nových záznamů do tabulky použijte níže uvedenou syntaxi:
INSERT INTO název_tabulky VALUES(hodnota1, hodnota2, hodnota3);Krok 4: Zobrazte záznamy pomocí dotazu SELECT.
Zobrazte záznamy z tabulky pomocí následující syntaxe:
SELECT * FROM název_tabulky;Následující dotaz zobrazí záznamy zaměstnanců.
SELECT * FROM Zaměstnanci;Výstup výše uvedeného dotazu SELECT je:
ID ZAMĚSTNANCE | FIRST_NAME | LAST_NAME | PLAT | MĚSTO | ODDĚLENÍ | ID SPRÁVCE |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60 000 | NOIDA | C# | 5 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIgarH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50 000 | MUMBAI | C# | 5 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTOVÁNÍ | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60 000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTOVÁNÍ | 4 |
5002 | SANKET | CHAUHAN | 70 000 | HYDERABÁD | JAVA | 3 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIgarH | C# | 5 |
6001 | RAHUL | NIKAM | 54500 | BANGALOR | TESTOVÁNÍ | 4 |
6002 | ATISH | JADHAV | 60500 | BANGALOR | C# | 5 |
6003 | NIKITA | INGALE | 65 000 | HYDERABÁD | ORACLE | 1 |
Následující dotaz zobrazí záznamy správce.
SELECT * FROM Manager;
Výstup výše uvedeného dotazu SELECT je:
Managerid | název_manažera | manažer_oddělení |
1 | Snehdeep Kaur | ORACLE |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | TESTOVÁNÍ |
5 | Akash Kadam | C# |
Následující dotaz zobrazí záznamy o Laptopu.
SELECT * FROM Laptop;
Výstup výše uvedeného dotazu SELECT je:
LAPTOPID | NAME | ID ZAMĚSTNANCE |
101 | DELL | NULL |
102 | HP | 1002 |
103 | LENOVO | NULL |
104 | HP | 3003 |
105 | DELL | 4002 |
106 | LENOVO | 4003 |
107 | DELL | 5001 |
108 | HP | NULL |
109 | DELL | NULL |
110 | HP | NULL |
111 | LENOVO | 2002 |
112 | LENOVO | 6003 |
113 | HP | 1003 |
Krok 5:Jsme připraveni použít INNER JOIN v dotazech
Pojďme pochopit Vnitřní spojení pomocí příkladů.
Příklad 1: Napište dotaz pro zobrazení ID zaměstnance, jména, příjmení, platu, města z tabulky zaměstnance a ID manažera a jména manažera z tabulky manažera pomocí Vnitřní spojení.
VYBRAT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, E.CITY, M.MANAGERID, M.MANAGER_NAME Z ZAMĚSTNANCŮ E VNITŘNÍ SPRÁVCE PŘIPOJENÍ M NA E.MANAGERID =M.MANAGERID;
Ve výše uvedeném dotazu jsme získali ID zaměstnance, jméno, příjmení, plat, město z tabulky zaměstnance a ID manažera, jméno manažera z tabulky manažerů, kde sloupec ID manažera tabulky zaměstnanců se rovná sloupci ID manažera tabulky manažera. Dotaz vrátí všechny záznamy o shodách z obou tabulek. ID správce je společný sloupec mezi oběma tabulkami. E je alias pro tabulku zaměstnanců, zatímco M je pro tabulku manažerů. Sloupec ID manažera funguje jako cizí klíč v tabulce zaměstnance. ID správce funguje jako primární klíč v tabulce správce, což vytváří vztah rodič-dítě mezi dvěma tabulkami.
Výstup výše uvedeného dotazu je:
ID ZAMĚSTNANCE | FIRST_NAME | LAST_NAME | PLAT | MĚSTO | ODDĚLENÍ | ID SPRÁVCE |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIgarH | ORACLE | 1 |
4003 | RUCHIKA | AGARWAL | 60 000 | DELHI | ORACLE | 1 |
6003 | NIKITA | INGALE | 65 000 | HYDERABÁD | ORACLE | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
5002 | SANKET | CHAUHAN | 70 000 | HYDERABÁD | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTOVÁNÍ | 4 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTOVÁNÍ | 4 |
6001 | RAHUL | NIKAM | 54500 | BANGALOR | TESTOVÁNÍ | 4 |
1002 | VAIBHAV | SHARMA | 60 000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50 000 | MUMBAI | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIgarH | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALOR | C# | 5 |
Záznamy se zobrazují ve vzestupném pořadí podle výchozího ID správce.
Příklad 2: Napište dotaz pro zobrazení ID zaměstnance, jména, příjmení, města a oddělení z tabulky zaměstnance a ID manažera a jména manažera z tabulky manažerů pomocí Inner Join, kde oddělení zaměstnanců je C#.
VYBRAT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.CITY, E.DEPARTMENT, M.MANAGERID, M.MANAGER_NAME Z ZAMĚSTNANCŮ E VNITŘNÍ SPRÁVCE PŘIPOJENÍ M NA E.MANAGERID =M.MANAGERID WHERE DEPARTMENT =' C#';
Ve výše uvedeném dotazu jsme získali ID zaměstnance, jméno, příjmení, město a oddělení z tabulky zaměstnance, ID manažera a jméno manažera z tabulky manažera, kde se ID manažera z tabulky zaměstnanců rovná pouze ID manažera z tabulky manažera ty záznamy zaměstnanců, jejichž oddělením zaměstnanců je C#.
Výstup výše uvedeného dotazu je:
ID ZAMĚSTNANCE | FIRST_NAME | LAST_NAME | PLAT | MĚSTO | ODDĚLENÍ | ID SPRÁVCE |
1002 | VAIBHAV | SHARMA | 60 000 | NOIDA | C# | 5 |
2003 | RUCHIKA | JAIN | 50 000 | MUMBAI | C# | 5 |
5003 | ROSHAN | NEHTE | 48500 | CHANDIgarH | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALOR | C# | 5 |
Ve výše uvedeném výstupu vidíme pouze ty záznamy, které jsou získávány od zaměstnanců, jejichž oddělení je C#. Klauzuli WHERE používáme se spojením INNER.
Příklad 3: Napište dotaz pro zobrazení ID zaměstnance, jména, platu, města a oddělení ze stolu zaměstnance a ID notebooku a názvu notebooku ze stolu s notebookem pomocí Inner Join.
VYBERTE E.EMPLOYEEID, E.FIRST_NAME, E.PLAT, E.CITY, E.DEPARTMENT, L.LAPTOPID, L.NAME Z ZAMĚSTNANCŮ E INNER JOIN LAPTOP L ON E.EMPLOYEEID =L.EMPLOYEEID;
Ve výše uvedeném dotazu jsme získali ID zaměstnance, jméno, plat, město a oddělení ze stolu zaměstnanců a ID notebooku a jméno z tabulky notebooku, kde se ID zaměstnance z tabulky zaměstnanců rovná ID zaměstnance z tabulky notebooku. . ID zaměstnance je cizí klíč v tabulce Laptop, který vytváří vztah rodič-dítě mezi tabulkou Zaměstnanec a tabulkou Laptop.
Výstup výše uvedeného dotazu je:
ID ZAMĚSTNANCE | FIRST_NAME | PLAT | MĚSTO | ODDĚLENÍ | LAPTOPID | NAME |
1002 | VAIBHAV | 60 000 | NOIDA | C# | 102 | HP |
3003 | DEEPAM | 58500 | MUMBAI | JAVA | 104 | HP |
4002 | ASHWINI | 54500 | NOIDA | JAVA | 105 | DELL |
4003 | RUCHIKA | 60 000 | DELHI | ORACLE | 106 | LENOVO |
5001 | ARCHIT | 55500 | DELHI | TESTOVÁNÍ | 107 | DELL |
2002 | BHAVESH | 65500 | PUNE | FMW | 111 | LENOVO |
6003 | NIKITA | 65 000 | HYDERABÁD | ORACLE | 112 | LENOVO |
1003 | NIKHIL | 50500 | JAIPUR | FMW | 113 | HP |
V daném výstupu jsou zobrazeny pouze ty záznamy, ke kterým je Laptop přiřazen.
Příklad 4: Napište dotaz pro zobrazení ID zaměstnance, jména, platu a oddělení z tabulky zaměstnanců a ID manažera a jména manažera z tabulky manažerů pomocí vnitřního spojení, kde plat> 57000 nebo oddělení je Oracle.
ZVOLTE ZAMĚSTNANCE ID, PRVNÍ JMÉNO, PLAT, ODDĚLENÍ, M.MANAGERID, M.MANAGER_NAME OD ZAMĚSTNANCŮ E VNITŘNÍ SPRÁVCE PŘIPOJENÍ M NA E.MANAGERID =M.MANAGERID WHERE PLAT> 57000 NEBO ODDĚLENÍ ='pre>ORACLE';
Ve výše uvedeném dotazu jsme získali ID zaměstnance, křestní jméno, plat a oddělení z tabulky zaměstnanců a ID manažera a jméno manažera z tabulky manažerů, kde ID manažera z tabulky zaměstnanců se rovná ID manažera od manažera pouze těm zaměstnancům, jejichž plat je vyšší než 57 000 nebo oddělení je Oracle.
Výstup výše uvedeného dotazu je:
ID ZAMĚSTNANCE | FIRST_NAME | LAST_NAME | PLAT | MĚSTO | ODDĚLENÍ | ID SPRÁVCE |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIgarH | ORACLE | 1 |
4003 | RUCHIKA | AGARWAL | 60 000 | DELHI | ORACLE | 1 |
6003 | NIKITA | INGALE | 65 000 | HYDERABÁD | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
5002 | SANKET | CHAUHAN | 70 000 | HYDERABAD | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTOVÁNÍ | 4 |
1002 | VAIBHAV | SHARMA | 60 000 | NOIDA | C# | 5 |
6002 | ATISH | JADHAV | 60500 | BANGALOR | C# | 5 |
Ve výše uvedeném výstupu jsou zobrazeny pouze záznamy o zaměstnancích, jejichž plat je vyšší než 57 000 nebo je oddělení zaměstnanců 'Oracle'. Operátor OR zobrazí záznamy, pokud je jedna z podmínek uvedených v dotazu pravdivá.