mysql join tutorial inner
Spoznajte različne stavke MySQL JOIN, kot so Notranji, Zunanji, Prečni, Levi, Desni in Self s primeri sintakse in programiranja:
V tej vadnici bomo spoznali MySQL JOIN in razumeli različne vrste združitev, ki jih MySQL podpira. JOIN v najpreprostejši obliki si lahko omislite kot sredstvo za pridobivanje / posodabljanje ali brisanje podatkov iz več tabel glede na eno poizvedbo.
V bistvu JOIN združuje 2 ali več tabel za pridobivanje podatkov glede na dani pogoj.
MySQL podpira tudi druge različne načine iskanja podatkov iz več tabel z uporabo - poizvedb in z združevanjem več poizvedb s pomočjo UNION itd.
Kaj se boste naučili:
- Normalizirane tabele
- Pridružite se MySQL
- Vrste MySQL PRIDRUŽITE
- MySQL PRIDRUŽITE SE S POSODOBITEV IN IZBRIS
- Zaključek
Normalizirane tabele
V normaliziranih zbirkah podatkov MySQL imajo tabele razmerja do običajnih stolpcev s pomočjo omejitev ključev, kot so tuji ključi.
Poskusimo to razumeti s pomočjo primera - Recimo, da obstajata 2 tabeli, EMPLOYEE in EMPLOYEE_DEPARTMENT. Zdaj v denormalizirani bazi podatkov - tj. V eni tabeli, ki vsebuje vse stolpce, bi se podvojilo veliko informacij, na primer o oddelku, saj je lahko veliko zaposlenih, ki so del istega oddelka.
Zato se baze podatkov hranijo v normaliziranem stanju, da bi zmanjšali podvajanje in prihranili pri shranjevanju.
V tem primeru bi se na oddelek sklicevali s pomočjo polja Department_id v tabeli ZAPOSLENI in vse ustrezne informacije, povezane z oddelkom, kot so informacije o oddelku, vodja oddelka itd., Bi se lahko hranile kot del tabele EMPLOYEE_DEPARTMENT.
Tako na kratko - EMPLOYEE in EMPLOYEE_DEPARTMENT sta med seboj povezana prek polja Department_id, ki deluje kot TUJI KLJUČ za tabelo ZAPOSLENI in PRIMARNI KLJUČ za tabelo EMPLOYEE_DEPARTMENT.
Spodnja slika je slikovna predstavitev, ki ima med obema tabelama razmerje s pomočjo Omejitev tujega ključa
Pridružite se MySQL
MySQL JOIN se uporablja za pridobivanje, posodabljanje ali brisanje podatkov iz 2 ali več tabel glede na dani pogoj. Zato se JOIN vedno uporablja skupaj s stavki SELECT, UPDATE ali DELETE
Sintaksa ukaza JOIN:
PRIDRUŽITE se s SELECT
SELECT {column_list} FROM tableName1 {joinType} tableName2 ON {joinCondition}
PRIDRUŽITE SE UPDATE
DELETE FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
PRIDRUŽITE SE DELETE
UPDATE tableName1 SET targetColumn = targetValue FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
Upoštevajte, da je JOIN mogoče uporabiti za več tabel v eni poizvedbi, vendar za poenostavitev najprej poskusimo razumeti uporabo združitev z 2 tabelama.
Različni deli sintakse vključujejo:
- {column_list} - To predstavlja imena stolpcev, ki jih želimo pridobiti kot rezultat naše poizvedbe.
- {JoinType} - To označuje vrsto Pridružitve, ki jo uporabljamo. Obstajajo naslednje različne vrste PRIDRUŽITEV, ki lahko pridobijo podatke:
- INNER JOIN
- ZUNANJI PRIDRUŽITEV
- LEVO ZUNANJE PRIDRUŽITEV
- PRAVO ZUNANJE PRIDRUŽITEV
- PRESEŽI SE
O vseh teh različnih vrstah PRIKLJUČK MySQL bomo izvedeli v naslednjih razdelkih vadnice.
- {JoinCondition} - To so pogoji stolpcev, ki bi bili uporabljeni za JOIN za poizvedovanje in pridobivanje podatkov.
V naslednjem poglavju bomo razpravljali o različnih vrstah združitev, ki so na voljo v MySQL.
Vrste MySQL PRIDRUŽITE
Priprava vzorčnih podatkov
Za uporabo JOINS bomo uporabili 2 tabeli Employee in Employee_Department s spodnjimi podrobnostmi. Uporabite lahko / se obrnite na koristno spletno mesto tukaj da bi ustvarili lažne podatke za shemo.
Naštevanje poizvedb za ustvarjanje in vstavljanje tabel:
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'),
INNER JOIN
INNER JOIN je najpogostejša oblika JOIN in se zelo pogosto uporablja. Skoraj vsi bi morali to uporabiti v določenem trenutku. Oglejmo si sintakso in nato nekaj vzorčnih poizvedb.
Sintaksa:
SELECT {column_list} FROM tableName1 INNER JOIN tableName2 ON {joinCondition}
Poizvedba za pridobitev imen oddelkov za vse zaposlene iz zgoraj navedenih tabel (Employee in 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
Tukaj je rezultat zgornje poizvedbe:
Ime zaposlenega | Ime_oddelka |
---|---|
stvari | Varnost |
WHO | Informacijska tehnologija |
In | HR |
doleteti | HR |
jaz | Finance |
potrebe | Računovodstvo |
Fgit | Gospodinjstvo |
prigrizki | Varnost |
prosim | Varnost |
To | Podpora |
In | Pogodbeno osebje |
zavzetost | Pogodbeno osebje |
odpornost | Pogodbeno osebje |
telo | Pogodbeno osebje |
Pošteno | Pogodbeno osebje |
pisarne | Prodaja |
stvari | Prodaja |
sitnosti | Upravljanje |
Bolečine | Upravljanje |
Ven | Upravljanje |
Opomba: Tu smo uporabili vzdevke imen stolpcev. Primer: Employee.name kot Employee_name - samo zato, da so rezultati bolj berljivi in celoviti.
Spremenimo to poizvedbo, da dobimo samo imena, ki se začnejo s črko '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%'
Spodaj je rezultat:
Ime zaposlenega | Ime_oddelka | |||||
---|---|---|---|---|---|---|
prigrizki | 7. | 6961 Weissnat Drive Donnellyfort, MT 53947 | 6. | NIČ | NIČ | NIČ |
sitnosti | Upravljanje | |||||
odpornost | Pogodbeno osebje |
Zdaj pa razumimo INNER JOIN s pomočjo Vennovega diagrama, kot je prikazano spodaj. Vrnjene rezultatske vrstice sestavljajo prekrivajoči se podatki med obema tabelama, ki se ujemajo s pogojem JOIN.
ZUNANJI PRIDRUŽITEV
OUTER JOIN se uporablja za pridobivanje podatkov iz 2 ali več tabel, z izjemo vključitve tudi neprimerljivih vrstic (ali vrstic z ničelnimi podatki za iskane stolpce).
Za boljše razumevanje zunanjega pridružitve dodajte novo tabelo office_locations s polji - id in naslov ter v prvotno ustvarjeno tabelo zaposlenih dodajte nov stolpec z imenom `office_id`.
Tu so poizvedbe za isto:
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;
Glejte spodnji Vennov diagram, da slikovito razumete ZUNANJE PRIDRUŽITVE:
Obstajata 2 vrsti ZUNANJIH PRIDRUŽITEV
a) LEVO ZUNANJE PRIDRUŽITEV
Kot že ime pove, bi ta vrsta Združevanja prinesla vse vrstice (vključno z vrednostmi NULL) iz tabele na levi strani poizvedbe JOIN. Z enostavnimi besedami bodo vrnjeni vsi rezultati / vrstice, ki se ne ujemajo s pogojem PRIDRUŽITEV, rezultat pa bo imel NULL vrednosti za desno tabelo.
Na primer, potrebujemo podatke o lokaciji za vse zaposlene - torej ugotovimo, kateri je naslov pisarne vseh zaposlenih.
SELECT * from Employee LEFT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Rezultat zgornje poizvedbe:
Ime | Id | Naslov | ID_oddelka | Office_id | Naslov pisarne | Id |
---|---|---|---|---|---|---|
jaz | eno | 640 Damon Junction East Mathew, NY 68818 | 3. | NIČ | NIČ | NIČ |
sitnosti | dva | 6658 Hollis Club Ernamouth, TX 19743 | 10. | eno | Bangalore | eno |
pisarne | 3. | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9. | dva | Mumbaj | dva |
stvari | 4. | 91067 trdnjava Geovany) Hanefort, WA 92863 | 6. | eno | Bangalore | eno |
In | 5. | 7647 Reva Shores Suite 970 New Audrafort, OH 17846-5397 | dva | NIČ | NIČ | NIČ |
In | 6. | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8. | dva | Mumbaj | dva |
zavzetost | 8. | 117 Apartma Nellie Summit 982 South Heavenfurt, CA 45675 | 8. | eno | Bangalore | eno |
doleteti | 9. | Suita 9086 Mariam Square 698 South Dulce, MT 82861-3079 | dva | dva | Mumbaj | dva |
stvari | 10. | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9. | eno | Bangalore | eno |
WHO | enajst | 42928 Ernesto Trail East Jules, WV 87169-2851 | eno | NIČ | NIČ | NIČ |
To | 12. | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7. | dva | Mumbaj | dva |
Bolečine | 13. | 22811 Liliana Trail Apt. 890 Južni Ernesto, MT 04134 | 10. | NIČ | NIČ | NIČ |
Ven | 14. | 981 Apartma Laron Nadvoz 361 Zahodni Olahaven, FL 46982-7801 | 10. | eno | Bangalore | eno |
odpornost | petnajst | 411 Louisa Mill South Maximefort, MA 04903 | 8. | dva | Mumbaj | dva |
potrebe | 16. | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4. | eno | Bangalore | eno |
FLED | 17. | 3647 Kotni kotiček Rosalinda Maureenstad, RI 96605 | 5. | NIČ | NIČ | NIČ |
telo | 18. | 03559 Nicholas Circle Apt. 364 Zahodni Zettaberg, ID 58592-3447 | 8. | dva | Mumbaj | dva |
ali | 19. | 56111 Alysson Gateway Apt. 212 Leschbury, VT 90605-2306 | 8. | NIČ | NIČ | NIČ |
prosim | dvajset | 263 Avenue O'Keefe Apt. 884 Zahodni Missouri, IL 50303 | 6. | eno | Bangalore | eno |
b) DESNO ZUNANJE PRIDRUŽITEV
Podobno kot LEFT JOIN se tudi pri tej vrsti Pridružitve vsi zapisi, ki se ne ujemajo iz desne tabele, vrnejo z NULL vrednostmi v stolpce za levo stransko tabelo.
kako uporabiti ukaz find v unixu
Na primer, z našimi vzorčnimi tabelami, če zaženemo RIGHT JOIN proti isti poizvedbi, ki smo jo uporabili za LEFT JOIN, bomo dobili NULL vrednosti za mesti 'Seattle' in 'Santa Clara', saj v tabeli zaposlenih ni vrstic, ki bi imele določeno lokacijo tem vrednotam.
SELECT * from Employee RIGHT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Rezultat zgornje poizvedbe:
Ime | Id | Naslov | ID_oddelka | Office_id | Naslov pisarne | Id |
---|---|---|---|---|---|---|
prosim | dvajset | 263 Avenue O'Keefe Apt. 884 Zahodni Missouri, IL 50303 | 6. | eno | Bangalore | eno |
sitnosti | dva | 6658 Hollis Club Ernamouth, TX 19743 | 10. | eno | Bangalore | eno |
stvari | 4. | 91067 Trdnjava Geovany Hanefort, WA 92863 | 6. | eno | Bangalore | eno |
zavzetost | 8. | 117 Apartma Nellie Summit 982 South Heavenfurt, CA 45675 | 8. | eno | Bangalore | eno |
stvari | 10. | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9. | eno | Bangalore | eno |
Ven | 14. | 981 Apartma Laron Nadvoz 361 Zahodni Olahaven, FL 46982-7801 | 10. | eno | Bangalore | eno |
potrebe | 16. | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4. | eno | Bangalore | eno |
pisarne | 3. | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9. | dva | Mumbaj | dva |
In | 6. | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8. | dva | Mumbaj | dva |
doleteti | 9. | Suita 9086 Mariam Square 698 South Dulce, MT 82861-3079 | dva | dva | Mumbaj | dva |
To | 12. | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7. | dva | Mumbaj | dva |
odpornost | petnajst | 411 Louisa Mill South Maximefort, MA 04903 | 8. | dva | Mumbaj | dva |
telo | 18. | 03559 Nicholas Circle Apt. 364 Zahodni Zettaberg, ID 58592-3447 | 8. | dva | Mumbaj | dva |
NIČ | NIČ | NIČ | NIČ | NIČ | Seattlu | 3. |
NIČ | NIČ | NIČ | NIČ | NIČ | Santa Clara | 4. |
Opombe / nasveti:
- V drugih relacijskih zbirkah podatkov, kot je Microsoft SQL, lahko najdete drugo vrsto ZUNANJEGA PRIDRUŽITEV, ki se imenuje FULL OUTER JOIN. To ni nič drugega kot kombinacija INNER in OUTER Joins - tj. Vrnila bo NULL vrednosti iz leve in desne tabele.
- Za podrobno razpravo skupaj z razlago in primeri razlik med NOTRANJIMI IN ZUNANJIMI PRIDRUŽITVAMI si oglejte našo vadnico tukaj.
- V poizvedbah OUTER JOIN - DESNO ZUNANJE PRIDRUŽITEV in LEFT OUTER JOIN lahko za večjo berljivost prav tako določite kot RIGHT JOIN in LEFT JOIN.
PRESEŽI SE
CROSS JOIN se imenuje tudi kartezični izdelek. Vrne rezultat glede na ujemajoče se pogoje Združevanja s skupno m x n vrsticami, kjer sta m in n število ujemajočih se vrstic v tabeli1 in tabeli2 glede pogoja PRIDRUŽITEV.
Oglejmo si vzorčno poizvedbo za CROSS JOIN za pridobivanje rezultatov iz 2 tabel - Employee in office_locations
SELECT * from Employee CROSS JOIN office_locations
Vrnjeni izhod bo vseboval skupno 80 vrstic, kar ni nič drugega kot zmnožek vrstic v obeh tabelah - Zaposleni (20) x office_locations (4) => 80
Prosimo, upoštevajte, da, med CROSS JOIN vam ni treba navesti nobenega pogoja JOIN, saj bi vseeno dobili m x n rezultat.
Opombe / nasveti:
Z uporabo CROSS JOIN ne boste našli velikokrat, saj nima veliko povezanih primerov uporabe. To združevanje se običajno izvede, ko nekdo želi dobiti vse možne kombinacije s podatki iz 2 tabel.
Na primer: Recimo, da ste izvoznik oblačil in imate dve tabeli - ena ima barvne podatke in druga velikostne podatke. Tu lahko za zagotovitev inventarja razmislite o PRESKLOPU obeh tabel, da zagotovite, da so vsa oblačila nabavljena za vse kombinacije velikosti in barv.
SAMO PRIDRUŽITE SE
SAMO PRIDRUŽITEV je tako kot katera koli druga INNER ali OUTER Join, z edino izjemo, da sta obe tabeli, tj.
Običajno uporabljamo SAMO Pridružitve, ko želimo ugotoviti razmerje med vrsticami iste tabele. Na primer, če ima tabela tako ID zaposlenega kot ID zaposlenega nadzornika, se lahko mizi pridružimo proti njej, če želimo ugotoviti ime upravitelja in ime zaposlenega.
Prosimo, upoštevajte, da bi morali za SAMO PRIDRUŽITEV uporabljati vzdevke tabel, da lahko določite pogoje Pridruževanja s sklicevanjem na pravilno tabelo.
Oglejmo si primer tukaj:
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
Tu smo združili tabelo z zaposlenimi, da bi ugotovili imena zaposlenih, ki imajo isto lokacijo in oddelek
Zaposleni1 | Zaposleni2 |
---|---|
In | odpornost |
sitnosti | sitnosti |
sitnosti | Ven |
Oficiis | pisarne |
stvari | stvari |
stvari | prosim |
In | In |
In | telo |
zavzetost | zavzetost |
doleteti | doleteti |
stvari | stvari |
To | To |
Ven | sitnosti |
Ven | Ven |
odpornost | In |
odpornost | odpornost |
odpornost | telo |
potrebe | potrebe |
telo | In |
telo | odpornost |
telo | telo |
prosim | stvari |
prosim | prosim |
Kot smo že razpravljali, SELF JOIN ima samo združevanje in združene tabele enako, lahko uporabimo SAMO PRIDRUŽITEV z INNER ali OUTER Joins.
MySQL PRIDRUŽITE SE S POSODOBITEV IN IZBRIS
Do zdaj smo razpravljali o združitvah s stavki SELECT. Pridružitve pa je mogoče uporabiti tudi z izjavami MySQL DELETE in UPDATE.
Sintaksa tu ostaja enaka. Oglejmo si nekaj primerov za boljše razumevanje koncepta.
POSODOBITE Z INNER JOIN
Recimo, da želimo spremeniti naslov v tabeli Employee v ime lokacije pisarne, ki je prisotna v tabeli office_locations. Tu lahko z INNER JOIN pridobimo ime mesta iz office_locations in posodobimo isto poizvedbo.
Vzorec poizvedbe:
UPDATE Employee emp inner join office_locations off_loc on emp.office_id = off_loc.id set emp.address = off_loc.address;
Podobno kot UPDATE je mogoče uporabiti tudi za druge vrste združitev, odvisno od zahteve glede posebnih primerov uporabe.
IZBRIŠI Z INNER JOIN
Kot primer bomo uporabili tabele, Employee in Employee_Departments. Recimo, da želimo izbrisati vse evidence zaposlenih, ki pripadajo prodajnemu oddelku, in želimo izbrisati tudi vnos za prodajni oddelek.
Ker smo kot omejitev FOREIGN KEY uporabili Department_id, bi morali to omejitev najprej DOPUSTITI, preden za več tabel uporabimo DELETE with JOIN.
Najprej ugotovimo ime omejitve, ki je bila ustvarjena za Department_id v tabeli Employee. Preprosto zaženite ukaz, da dobite ukaz CREATE TABLE.
show create table Employee
Rezultat boste dobili kot:
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
Zdaj se lahko sklicujete na ime omejitve FOREIGN_KEY iz zgornjega ukaza, ki je ‘Employee_ibfk_1’, in lahko s tem imenom spustimo to omejitev iz tabele Employee z zagonom spodnjega ukaza:
alter table Employee drop constraint Employee_ibfk_1
Zdaj zaženimo ukaz DELETE z 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
Rezultat tega ukaza bi bil št. vrstic izbrisanih (in to bi moralo uspešno IZBRIŠITI vrstice iz obeh tabel, na katere se sklicuje zgornja poizvedba JOIN)
Pogosto zastavljena vprašanja
V # 1) Koliko vrst združitev je v MySQL?
Odgovor: MySQL podpira predvsem 3 vrste združitev. To so:
- Notranje pridružitev
- Zunanje združevanje - levo zunanje združevanje in desno zunanje združevanje
- Cross Join
V # 2) Ali se Join lahko uporabi samo za 2 tabeli?
Odgovor: Spoji se lahko uporabijo za 2 ali več kot 2 tabeli. Večinoma se združitve uporabljajo za 2 tabeli.
Spodaj je primer INNER JOIN z uporabo 3 tabel:
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
Rezultat zgornje poizvedbe:
emp_name | ime_dept | lokacija_poslovanja |
---|---|---|
Ven | Upravljanje | Bangalore |
sitnosti | Upravljanje | Bangalore |
stvari | Varnost | Bangalore |
In | Pogodbeno osebje | Mumbaj |
zavzetost | Pogodbeno osebje | Bangalore |
doleteti | HR | Mumbaj |
To | Podpora | Mumbaj |
odpornost | Pogodbeno osebje | Mumbaj |
potrebe | Računovodstvo | Bangalore |
telo | Pogodbeno osebje | Mumbaj |
prosim | Varnost | Bangalore |
V # 3) Kako uporabiti vzdevke tabel z Joins?
Odgovor: Vzdevki so način, kako imeti začasno ime tabele, na katero se lahko sklicuje znotraj poizvedbe. Ker so poizvedbe JOIN včasih zapletene in so poizvedbe bolj berljive ter se izogibajo sklicevanju na imena tabel za vsak sklic stolpca, lahko imena skrajšamo z vzdevki.
Napišimo poizvedbo INNER JOIN, da pridobimo podatke za vsa imena zaposlenih in imena oddelkov iz tabel Employee in Employee_Departments.
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
V zgornjem poizvedbi lahko vidite, da smo vzdevek tabele Employee vzpostavili kot emp in tabelo Employee_Department kot Department ter vzdevke uporabili za sklicevanje na imena stolpcev in pogoje pridružitve.
V # 4) Kaj je CROSS JOIN?
Odgovor: CROSS JOIN je vrsta Pridružitve, pri kateri želi uporabnik pridobiti kartezični izdelek tabel, ki se pridružijo.
Rezultat CROSS JOIN je m x n, kjer je m število ujemajočih se vrstic v prvi tabeli, n pa število ujemajočih se vrstic v drugi tabeli.
preizkusite spletno mesto za ranljivost vbrizgavanja sql
V # 5) Kako v MySQL pridobiti POPOLNO ZUNANJE PRIDRUŽITEV
Odgovor: MySQL v nasprotju z drugimi bazami podatkov, kot je Microsoft SQL, ne ponuja FULL OUTER JOIN kot ločen tip Združevanja. Za pridobitev rezultatov, kot bi jih bil dosežen FULL OUTER JOIN, lahko združimo rezultate LEFT OUTER JOIN in RIGHT OUTER JOIN.
Na primer, lahko poiščemo podrobnosti o zaposlenih in oddelkih ter uveljavimo zvezo za levi in desni zunanji spoj.
Priporočeno branje = >> MySQL Union Operator
Zaključek
V tej vadnici smo spoznali različne vrste združitev, ki so na voljo v MySQL.
Razpravljali smo o pridruževanju INNER, OUTER, CROSS in SELF Joins ter videli tudi, kako je mogoče poizvedbe JOIN uporabiti z izjavami UPDATE in DELETE, da imamo učinkovite in optimizirane poizvedbe za združene podatke med 2 ali več kot 2 tabelama.
PRIDRUŽITVE so ena izmed najosnovnejših uporabljenih poizvedb in vsak, ki uporablja ali se uči zbirke podatkov, ki temeljijo na SQL, bi moral temeljito razumeti povezave SQL.
Priporočeno branje
- Inner Join Vs Zuter Join: Natančna razlika s primeri
- Vadnica za ustvarjanje pogleda MySQL s primeri kode
- Izjava MySQL Delete - Izbriši sintakso ukaza in primere
- MySQL Vstavi v tabelo - Vstavi sintakso in primere izjave
- Vadnica za izjavo o posodobitvi MySQL - Sintaksa in primeri posodobitve poizvedbe
- Razlika med SQL Vs MySQL Vs SQL Server (s primeri)
- Kaj je MySQL in zakaj se uporablja?
- 20+ MongoDB vadnica za začetnike: brezplačen tečaj MongoDB