mysql join tutorial inner
Seznamte se s různými příkazy MySQL JOIN, jako jsou vnitřní, vnější, křížové, levé, pravé a vlastní, se syntaxí a příklady programování:
V tomto tutoriálu se seznámíme s MySQL JOIN a také porozumíme různým typům spojení, která jsou v MySQL podporována. JOIN ve své nejjednodušší formě lze považovat za prostředek k načtení / aktualizaci nebo odstranění dat z více tabulek proti jedinému dotazu.
V podstatě tedy JOIN kombinuje 2 nebo více tabulek k načtení dat proti dané podmínce.
MySQL také podporuje další různé způsoby dotazování dat z více tabulek pomocí - poddotazů a kombinací více dotazů pomocí UNION atd.
Co se naučíte:
- Normalizované tabulky
- PŘIPOJTE SE k MySQL
- Typy připojení MySQL
- MySQL PŘIPOJTE SE AKTUALIZACÍ A ODSTRANĚNÍM
- Závěr
Normalizované tabulky
V normalizovaných databázích MySQL mají tabulky vztahy proti běžným sloupcům prostřednictvím klíčových omezení, jako jsou cizí klíče.
Zkusme to pochopit pomocí příkladu - Předpokládejme, že existují 2 tabulky, EMPLOYEE a EMPLOYEE_DEPARTMENT. Nyní v denormalizované databázi - tj. V jedné tabulce, která má všechny sloupce, by se duplikovalo mnoho informací, například o oddělení, protože tam může být spousta zaměstnanců, kteří jsou součástí stejného oddělení.
Proto, aby se tyto duplicity zmenšily a ušetřily na úložišti, jsou databáze udržovány v normalizovaném stavu.
V tomto případě bychom tedy na oddělení odkazovali pomocí pole Department_id v tabulce ZAMĚSTNANCI a všechny relevantní informace související s Odděleními, jako jsou informace o oddělení, vedoucí oddělení atd., Mohou být uchovávány jako součást tabulky EMPLOYEE_DEPARTMENT.
Stručně řečeno - EMPLOYEE a EMPLOYEE_DEPARTMENT jsou vzájemně propojeny prostřednictvím pole Department_id, které funguje jako FOREIGN KEY pro tabulku EMPLOYEE a PRIMARY KEY pro tabulku EMPLOYEE_DEPARTMENT.
Níže je obrázek, který má vztah mezi oběma tabulkami pomocí Omezení cizího klíče
PŘIPOJTE SE k MySQL
MySQL JOIN se používá k načítání, aktualizaci nebo mazání dat ze 2 nebo více tabulek za dané podmínky. Proto se JOIN vždy používá ve spojení s příkazy SELECT, UPDATE nebo DELETE
Syntaxe příkazu JOIN:
PŘIPOJTE SE K VÝBĚRU
SELECT {column_list} FROM tableName1 {joinType} tableName2 ON {joinCondition}
PŘIPOJTE SE AKTUALIZOVAT
DELETE FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
PŘIPOJTE SE K ODSTRANĚNÍ
UPDATE tableName1 SET targetColumn = targetValue FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
Vezměte prosím na vědomí, že JOIN lze použít na více tabulek v jednom dotazu, ale pro zjednodušení se nejdříve pokusíme porozumět použití spojení se 2 tabulkami.
Mezi různé části syntaxe patří:
- {column_list} - To představuje názvy sloupců, které chceme načíst jako výsledek našeho dotazu.
- {JoinType} - To označuje typ spojení, který používáme. Existují následující různé typy JOINS, které mohou načíst data:
- VNITŘNÍ SPOJENÍ
- VNĚJŠÍ PŘIPOJENÍ
- VLEVO VENKOVNÍ PŘIPOJENÍ
- PRAVÉ VNĚJŠÍ PŘIPOJENÍ
- CROSS JOIN
O všech těchto různých typech MySQL JOINS se budeme učit v následujících částech tutoriálu.
- {JoinCondition} - Toto jsou podmínky sloupce, které by byly použity pro JOIN k dotazování a načítání dat.
V další části probereme různé typy spojení, která jsou k dispozici v MySQL.
Typy připojení MySQL
Příprava vzorových dat
Chcete-li použít JOINS, použijeme 2 tabulky Employee a Employee_Department s podrobnostmi níže. Můžete použít / odkázat na užitečné stránky tady za účelem generování fiktivních dat pro schéma.
Seznam dotazů pro vytvoření a vložení tabulky:
CREATE TABLE IF NOT EXISTS Employee_Department ( name varchar(100), id INT NOT NULL auto_increment, PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS Employee ( name varchar(100), id int not null auto_increment, address varchar(100), Department_id int, PRIMARY KEY (id), FOREIGN KEY (Department_id) references Employee_Department(id) ); INSERT INTO `Employee_Department` VALUES ('Information Technology','1'), ('HR','2'), ('Finance','3'), ('Accounting','4'), ('Housekeeping','5'), ('Security','6'), ('Support','7'), ('Contract Staff','8'), ('Sales','9'), ('Management','10'); INSERT INTO `Employee` VALUES ('Veniam','1','640 Damon Junction
East Mathew, NY 68818','3'), ('Molestiae','2','6658 Hollis Club
Ernamouth, TX 19743','10'), ('Officiis','3','59965 Mason Neck Apt. 985
Kareemborough, NV 85535','9'), ('Rerum','4','91067 Geovany Fort
Hanefort, WA 92863','6'), ('Et','5','7647 Reva Shores Suite 970
New Audrafort, OH 17846-5397','2'), ('Et','6','9419 Carmela Burg Apt. 687
Aimeebury, SD 32389-4489','8'), ('Laborum','7','6961 Weissnat Drive
Donnellyfort, MT 53947','6'), ('Cupiditate','8','117 Nellie Summit Suite 982
South Heavenfurt, CA 45675','8'), ('Eveniet','9','9086 Mariam Square Suite 698
South Dulce, MT 82861-3079','2'), ('Rerum','10','783 Goodwin Burgs Apt. 429
Willmsfort, UT 42820-1019','9'), ('Quis','11','42928 Ernesto Trail
East Jules, WV 87169-2851','1'), ('Esse','12','161 Kassulke Stravenue Apt. 937
Williamsonton, MS 62622','7'), ('Dolores','13','22811 Liliana Trail Apt. 890
South Ernesto, MT 04134','10'), ('Ut','14','981 Laron Overpass Suite 361
West Olahaven, FL 46982-7801','10'), ('Mollitia','15','411 Louisa Mill
South Maximefort, MA 04903','8'), ('Necessitatibus','16','2853 Jonathon Turnpike
Quitzonville, KY 54776','4'), ('Fugit','17','3647 Rosalinda Corner
Maureenstad, RI 96605','5'), ('Corporis','18','03559 Nicholas Circle Apt. 364
West Zettaberg, ID 58592-3447','8'), ('Neque','19','56111 Alysson Gateway Apt. 212
Leschbury, VT 90605-2306','8'), ('Velit','20','263 O'Keefe Avenue Apt. 884
West Missouri, IL 50303','6'),
VNITŘNÍ SPOJENÍ
INNER JOIN je nejběžnější forma JOIN a je velmi široce používána. Téměř všichni jste to někdy měli použít. Podívejme se na syntaxi a několik ukázkových dotazů.
Syntax:
SELECT {column_list} FROM tableName1 INNER JOIN tableName2 ON {joinCondition}
Dotaz na načtení Department_names pro všechny zaměstnance z výše deklarovaných tabulek (Employee and Employee_Department):
SELECT Employee.name as Employee_name, Employee_Department.name as Department_name FROM Employee INNER JOIN Employee_Department ON Employee.Department_id = Employee_Department.id
Tady je výstup výše uvedeného dotazu:
Jméno zaměstnance | Department_name |
---|---|
věci | Bezpečnostní |
SZO | Informační technologie |
A | HR |
potkat | HR |
Já | Finance |
potřeby | Účetnictví |
Fgit | Úklid |
občerstvení | Bezpečnostní |
prosím | Bezpečnostní |
Že | Podpěra, podpora |
A | Smluvní zaměstnanci |
dychtivost | Smluvní zaměstnanci |
odolnost | Smluvní zaměstnanci |
tělo | Smluvní zaměstnanci |
Veletrh | Smluvní zaměstnanci |
kanceláře | Odbyt |
věci | Odbyt |
mrzutosti | Řízení |
Bolesti | Řízení |
Ven | Řízení |
Poznámka: Zde jsme použili aliasy názvů sloupců. Příklad: Employee.name jako Employee_name - jen aby byly výsledky čitelnější a komplexnější.
Upravme tento dotaz tak, aby načetl pouze jména začínající písmenem „m“.
SELECT Employee.name as Employee_name, Employee_Department.name as Department_name FROM Employee INNER JOIN Employee_Department ON Employee.Department_id = Employee_Department.id WHERE Employee.name like 'm%'
Níže je uveden výstup:
Jméno zaměstnance | Department_name | |||||
---|---|---|---|---|---|---|
občerstvení | 7 | 6961 Weissnat Drive Donnellyfort, MT 53947 | 6 | NULA | NULA | NULA |
mrzutosti | Řízení | |||||
odolnost | Smluvní zaměstnanci |
A teď pojďme pochopit VNITŘNÍ PŘIPOJENÍ pomocí Vennova diagramu, jak je uvedeno níže. Výsledné vrácené řádky se skládají z překrývajících se dat mezi oběma tabulkami v porovnání s podmínkou JOIN.
VNĚJŠÍ PŘIPOJENÍ
OUTER JOIN se používá k načtení dat ze 2 nebo více tabulek s výjimkou zahrnutí i nepřizpůsobených řádků (nebo řádků s nulovými daty pro dotazované sloupce).
Abyste lépe porozuměli vnějšímu připojení, přidejte novou tabulku office_locations s poli - id a adresa a přidejte nový sloupec s názvem `office_id` do původně vytvořené tabulky zaměstnanců.
Tady jsou stejné dotazy:
CREATE TABLE IF NOT EXISTS office_locations ( address varchar(100), id INT NOT NULL auto_increment, PRIMARY KEY (id) ); ALTER TABLE Employee ADD COLUMN office_id int; INSERT INTO `office_locations`(address) VALUES('Bangalore'), ('Mumbai'), ('Seattle'), ('Santa Clara'); UPDATE Employee SET office_id=1 where id % 2 = 0; UPDATE Employee SET office_id=2 where id % 3 = 0;
Níže naleznete Vennovo schéma, abyste pochopili VNĚJŠÍ PŘIPOJENÍ obrazně:
Existují 2 typy VNĚJŠÍCH PŘIPOJENÍ
a) VLEVO VNĚJŠÍ PŘIPOJENÍ
Jak název napovídá, tento typ spojení by načetl všechny řádky (včetně hodnot NULL) z tabulky, která je na levé straně dotazu JOIN. Jednoduše řečeno, všechny výsledky / řádky, které neodpovídají podmínce JOIN, budou vráceny s výsledkem, který bude mít pro správnou tabulku hodnoty NULL.
Například, potřebujeme údaje o poloze pro všechny zaměstnance - tj. zjistit, jaká je adresa kanceláře všech zaměstnanců.
SELECT * from Employee LEFT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Výstup výše uvedeného dotazu:
název | Id | Adresa | Department_id | Office_id | Adresa kanceláře | Id |
---|---|---|---|---|---|---|
Já | jeden | 640 Damon Junction East Mathew, NY 68818 | 3 | NULA | NULA | NULA |
mrzutosti | dva | 6658 Hollis Club Ernamouth, TX 19743 | 10 | jeden | Bangalore | jeden |
kanceláře | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | dva | Bombaj | dva |
věci | 4 | 91067 Geovany Fort) Hanefort, WA 92863 | 6 | jeden | Bangalore | jeden |
A | 5 | 7647 Reva Shores Suite 970 New Audrafort, OH 17846-5397 | dva | NULA | NULA | NULA |
A | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | dva | Bombaj | dva |
dychtivost | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, CA 45675 | 8 | jeden | Bangalore | jeden |
potkat | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | dva | dva | Bombaj | dva |
věci | 10 | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | jeden | Bangalore | jeden |
SZO | jedenáct | 42928 Ernesto Trail East Jules, WV 87169-2851 | jeden | NULA | NULA | NULA |
Že | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | dva | Bombaj | dva |
Bolesti | 13 | 22811 Liliana Trail Apt. 890 South Ernesto, MT 04134 | 10 | NULA | NULA | NULA |
Ven | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | jeden | Bangalore | jeden |
odolnost | patnáct | 411 Louisa Mill South Maximefort, MA 04903 | 8 | dva | Bombaj | dva |
potřeby | 16 | 2853 Jonathon silnice Quitzonville, KY 54776 | 4 | jeden | Bangalore | jeden |
FLED | 17 | 3647 Rosalinda Corner Maureenstad, RI 96605 | 5 | NULA | NULA | NULA |
tělo | 18 | 03559 Nicholas Circle Apt. 364 West Zettaberg, ID 58592-3447 | 8 | dva | Bombaj | dva |
nebo | 19 | 56111 Alysson Gateway Apt. 212 Leschbury, VT 90605-2306 | 8 | NULA | NULA | NULA |
prosím | dvacet | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | jeden | Bangalore | jeden |
b) PRAVÉ VNĚJŠÍ PŘIPOJENÍ
Podobně jako LEFT JOIN, v tomto typu spojení jsou všechny záznamy, které se neshodují z pravé tabulky, vráceny s hodnotami NULL ve sloupcích tabulky vlevo.
jak používat tvrzení v selenu webdriver
Například, s našimi ukázkovými tabulkami, pokud spustíme RIGHT JOIN proti stejnému dotazu, který jsme použili pro LEFT JOIN, dostaneme NULL hodnoty pro města 'Seattle' a 'Santa Clara', protože v tabulce Zaměstnanec, která má nastavenou polohu, nejsou žádné řádky na tyto hodnoty.
SELECT * from Employee RIGHT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Výstup výše uvedeného dotazu:
název | Id | Adresa | Department_id | Office_id | Adresa kanceláře | Id |
---|---|---|---|---|---|---|
prosím | dvacet | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | jeden | Bangalore | jeden |
mrzutosti | dva | 6658 Hollis Club Ernamouth, TX 19743 | 10 | jeden | Bangalore | jeden |
věci | 4 | 91067 Pevnost Geovany Hanefort, WA 92863 | 6 | jeden | Bangalore | jeden |
dychtivost | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, CA 45675 | 8 | jeden | Bangalore | jeden |
věci | 10 | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | jeden | Bangalore | jeden |
Ven | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | jeden | Bangalore | jeden |
potřeby | 16 | 2853 Jonathon silnice Quitzonville, KY 54776 | 4 | jeden | Bangalore | jeden |
kanceláře | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | dva | Bombaj | dva |
A | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | dva | Bombaj | dva |
potkat | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | dva | dva | Bombaj | dva |
Že | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | dva | Bombaj | dva |
odolnost | patnáct | 411 Louisa Mill South Maximefort, MA 04903 | 8 | dva | Bombaj | dva |
tělo | 18 | 03559 Nicholas Circle Apt. 364 West Zettaberg, ID 58592-3447 | 8 | dva | Bombaj | dva |
NULA | NULA | NULA | NULA | NULA | Seattle | 3 |
NULA | NULA | NULA | NULA | NULA | Santa Clara | 4 |
Poznámky / tipy:
- V jiných relačních databázích, jako je Microsoft SQL - můžete najít jiný typ OUTER JOIN, který se nazývá FULL OUTER JOIN. Není to nic jiného než kombinace INNER a OUTER Joins - tj. Vrátí hodnoty NULL z obou LEFT a RIGHT tabulek.
- Podrobnou diskusi spolu s vysvětlením a příklady rozdílů mezi VNITŘNÍM a VNĚJŠÍM PŘIPOJENÍm naleznete v našem výukovém programu tady.
- V dotazech OUTER JOIN - RIGHT OUTER JOIN a LEFT OUTER JOIN lze pro větší čitelnost zadat jako RIGHT JOIN a LEFT JOIN.
CROSS JOIN
CROSS JOIN se také nazývá kartézský produkt. Vrátí výsledek proti odpovídajícím podmínkám spojení s celkovým počtem řádků m x n, kde m a n jsou počet odpovídajících řádků v tabulce1 a tabulce2 proti podmínce JOIN.
Podívejme se na ukázkový dotaz pro CROSS JOIN pro získání výsledků ze 2 tabulek - Employee and office_locations
SELECT * from Employee CROSS JOIN office_locations
Vrácený výstup bude obsahovat celkem 80 řádků, což není nic jiného než součin řádků v obou tabulkách - Zaměstnanec (20) x office_locations (4) => 80
Vezměte prosím na vědomí, že, při provádění CROSS JOIN nemusíte specifikovat žádnou podmínku JOIN, protože byste stejně dostali m x n výsledek.
Poznámky / tipy:
CROSS JOIN nenajdete mnohokrát, protože není spojeno mnoho případů použití. Toto spojení se obvykle provádí, když někdo hledá všechny možné kombinace oproti datům ze 2 tabulek.
Například: Předpokládejme, že jste vývozcem oděvů a máte 2 tabulky - jednu s barevnými údaji a druhou s velikostí. Tady, abyste zajistili inventář, můžete zvážit CROSS JOIN obou tabulek, abyste zajistili, že všechny oděvy budou pořízeny pro všechny velikosti a barevné kombinace.
SEBE SE PŘIPOJTE
SELF JOIN je jako každý jiný INNER nebo OUTER Join, s jedinou výjimkou, že obě tabulky, tj. Tabulka Joining a Joined, jsou stejné.
Obecně používáme SELF Joins, když chceme zjistit vztah mezi řádky stejné tabulky. Například, pokud má tabulka ID zaměstnance i ID zaměstnance supervizora, můžeme se připojit k tabulce sami proti sobě, pokud chceme zjistit jméno manažera podle jména zaměstnance.
Pamatujte, že pro SELF JOIN byste měli používat aliasy tabulek, aby bylo možné určit podmínky spojení s odkazem na správnou tabulku.
Podívejme se na příklad zde:
SELECT e1.name as Employee1, e2.name as Employee2 from Employee e1 inner join Employee e2 on e1.office_id = e2.office_id where e1.Department_id = e2.Department_id
Zde jsme se k sobě připojili k tabulce Zaměstnanec, abychom zjistili jména zaměstnanců, kteří mají stejné umístění kanceláře a oddělení
jak převést znak na řetězec c ++
Zaměstnanec1 | Zaměstnanec2 |
---|---|
A | odolnost |
mrzutosti | mrzutosti |
mrzutosti | Ven |
Oficiis | kanceláře |
věci | věci |
věci | prosím |
A | A |
A | tělo |
dychtivost | dychtivost |
potkat | potkat |
věci | věci |
Že | Že |
Ven | mrzutosti |
Ven | Ven |
odolnost | A |
odolnost | odolnost |
odolnost | tělo |
potřeby | potřeby |
tělo | A |
tělo | odolnost |
tělo | tělo |
prosím | věci |
prosím | prosím |
Jak jsme již diskutovali, SELF JOIN má pouze Joining a Joined tables stejné, můžeme použít SELF JOIN s INNER nebo OUTER Joins.
MySQL PŘIPOJTE SE AKTUALIZACÍ A ODSTRANĚNÍM
Dosud jsme diskutovali o spojení s příkazy SELECT. Spojení však lze použít také s příkazy MySQL DELETE a UPDATE.
Syntaxe zde zůstává stejná. Podívejme se na několik příkladů, abychom tomuto konceptu lépe porozuměli.
AKTUALIZACE INNER JOIN
Předpokládejme, že chceme změnit adresu v tabulce Zaměstnanec na název umístění kanceláře, který je přítomen v tabulce office_locations. Zde můžeme použít INNER JOIN k načtení názvu města z office_locations a aktualizaci stejného dotazu.
Ukázkový dotaz:
UPDATE Employee emp inner join office_locations off_loc on emp.office_id = off_loc.id set emp.address = off_loc.address;
Podobně lze UPDATE použít také s jinými typy spojení, v závislosti na požadavku proti konkrétním případům použití.
ODSTRANIT S VNITŘNÍM PŘIPOJENÍM
Jako příklad použijeme tabulky, Employee a Employee_Departments. Předpokládejme, že chceme odstranit všechny záznamy zaměstnanců, které patří do obchodního oddělení, a chceme odstranit také záznam pro obchodní oddělení.
Protože jsme použili Department_id jako omezení FOREIGN KEY, měli bychom nejprve DROP toto omezení předtím, než použijeme DELETE s JOIN pro více tabulek.
Nejprve zjistíme název omezení, které bylo vytvořeno pro Department_id v tabulce Zaměstnanec. Jednoduše spusťte příkaz a získáte příkaz CREATE TABLE.
show create table Employee
Výstup získáte jako:
CREATE TABLE `Employee` ( `name` varchar(100) DEFAULT NULL, `id` int NOT NULL AUTO_INCREMENT, `address` varchar(100) DEFAULT NULL, `Department_id` int DEFAULT NULL, `office_id` int DEFAULT NULL, PRIMARY KEY (`id`), KEY `Department_id` (`Department_id`), CONSTRAINT `Employee_ibfk_1` FOREIGN KEY (`Department_id`) REFERENCES `Employee_Department` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Nyní můžete odkazovat na název omezení FOREIGN_KEY z výše uvedeného příkazu, který je „Employee_ibfk_1“, a pomocí tohoto názvu můžeme toto omezení zrušit z tabulky zaměstnanců spuštěním níže uvedeného příkazu:
alter table Employee drop constraint Employee_ibfk_1
Nyní spustíme příkaz DELETE s INNER JOIN
delete emp_dept, emp from Employee emp inner join Employee_Department emp_dept on emp.Department_id = emp_dept.id where emp.Department_id = 9
Výstup tohoto příkazu by byl ne. řádků odstraněno (a to by mělo úspěšně ODSTRANIT řádky z obou tabulek, na které se odkazuje v dotazu JOIN výše)
Často kladené otázky
Otázka č. 1) Kolik typů připojení existuje v MySQL?
Odpovědět: MySQL podporuje primárně 3 typy spojení. Tyto jsou:
- Vnitřní spojení
- Vnější spoj - levý vnější spoj a pravý vnější spoj
- Křížové spojení
Otázka č. 2) Lze připojit pouze pro 2 stoly?
Odpovědět: Spojení lze použít na 2 nebo více než 2 tabulky. Většinu času se spojení používá pro 2 tabulky.
Níže je příklad VNITŘNÍHO PŘIPOJENÍ pomocí 3 tabulek:
select Employee.name as emp_name, Employee_Department.name as dept_name, office_locations.address as office_location from Employee inner join Employee_Department on Employee.Department_id = Employee_Department.id inner join office_locations on Employee.office_id = office_locations.id
Výstup výše uvedeného dotazu:
emp_name | dept_name | office_location |
---|---|---|
Ven | Řízení | Bangalore |
mrzutosti | Řízení | Bangalore |
věci | Bezpečnostní | Bangalore |
A | Smluvní zaměstnanci | Bombaj |
dychtivost | Smluvní zaměstnanci | Bangalore |
potkat | HR | Bombaj |
Že | Podpěra, podpora | Bombaj |
odolnost | Smluvní zaměstnanci | Bombaj |
potřeby | Účetnictví | Bangalore |
tělo | Smluvní zaměstnanci | Bombaj |
prosím | Bezpečnostní | Bangalore |
Otázka č. 3) Jak používat aliasy tabulek s Joins?
Odpovědět: Aliasy jsou způsob, jak mít dočasný název tabulky, na kterou se má v dotazu odkazovat. Vzhledem k tomu, že JOIN dotazy jsou občas složité a aby byly dotazy čitelné a aby se zabránilo odkazování na názvy tabulek pro každý odkaz na sloupec, můžeme mít zkrácené názvy s aliasy.
Napíšeme dotaz VNITŘNÍ PŘIPOJENÍ, abychom načetli data pro všechna jména zaměstnanců a názvy oddělení z tabulek Zaměstnanec a Zaměstnanec_oddělení.
select emp.name as emp_name, Department.name as dept_name from Employee emp inner join Employee_Department as Department on emp.Department_id = Department.id
Ve výše uvedeném dotazu vidíte, že jsme aliasovali tabulku zaměstnanců jako emp a tabulku Employee_Department jako oddělení a použili aliasy pro odkazování na názvy sloupců a podmínky spojení.
Otázka č. 4) Co je CROSS JOIN?
Odpovědět: CROSS JOIN je typ spojení, kde chce uživatel načíst kartézský součin připojovaných tabulek.
Výsledkem CROSS JOIN je m x n, kde m je počet odpovídajících řádků v první tabulce an je počet odpovídajících řádků v druhé tabulce.
Otázka č. 5) Jak získat FULL OUTER JOIN v MySQL
Odpovědět: MySQL neposkytuje FULL OUTER JOIN jako samostatný typ spojení na rozdíl od jiných databází, jako je Microsoft SQL. Chcete-li však získat výsledky, které by přineslo FULL OUTER JOIN, můžeme kombinovat výsledky LEFT OUTER JOIN a RIGHT OUTER JOIN.
Například můžeme načíst podrobnosti o zaměstnanci a oddělení a použít sjednocení na levé a pravé vnější spojení.
Doporučené čtení = >> Provozovatel unie MySQL
Závěr
V tomto kurzu jsme se dozvěděli o různých typech spojení, která jsou k dispozici v MySQL.
Diskutovali jsme o INNER, OUTER, CROSS a SELF Joins a také jsme viděli, jak lze použít JOIN dotazy s příkazy UPDATE a DELETE, abychom měli efektivní a optimalizované dotazy pro spojená data mezi 2 nebo více než 2 tabulkami.
JOINS jsou jedním z nejzákladnějších používaných dotazů a každý, kdo používá nebo se učí databáze založené na SQL, by měl důkladně rozumět spojování SQL.
Doporučené čtení
- Vnitřní spojení Vs vnější spojení: Přesný rozdíl s příklady
- MySQL Create View Tutorial s příklady kódu
- Prohlášení o odstranění MySQL - odstranění syntaxe příkazu a příkladů
- MySQL Vložit do tabulky - Vložit syntaxi výpisu a příklady
- Výukový program pro prohlášení o aktualizaci MySQL - aktualizace syntaxe dotazů a příklady
- Rozdíl mezi SQL Vs MySQL Vs SQL Server (s příklady)
- Co je MySQL a proč se používá?
- 20+ výuka MongoDB pro začátečníky: bezplatný kurz MongoDB