mysql join tutorial inner
Lär dig om olika MySQL JOIN-uttalanden som Inner, Outer, Cross, Left, Right, And Self med syntax och programmeringsexempel:
I denna handledning lär vi oss om MySQL JOIN och förstår också de olika typerna av Joins som stöds i MySQL. JOIN i sin enklaste form kan ses som ett sätt att hämta / uppdatera eller ta bort data från flera tabeller mot en enda fråga.
Så i grund och botten kombinerar JOIN två eller flera tabeller för att hämta data mot ett visst tillstånd.
MySQL stöder också andra olika sätt att fråga data från flera tabeller med - underfrågor och genom att kombinera flera frågor med hjälp av UNION, etc.
Vad du kommer att lära dig:
- Normaliserade tabeller
- MySQL GÅ MED
- Typer av MySQL JOIN
- MySQL GÅ MED MED UPPDATERING OCH RADERA
- Slutsats
Normaliserade tabeller
I normaliserade MySQL-databaser har tabeller förhållanden mot vanliga kolumner genom nyckelbegränsningar som främmande nycklar.
Låt oss försöka förstå detta med hjälp av ett exempel - Antag att det finns två tabeller, EMPLOYEE och EMPLOYEE_DEPARTMENT. Nu i en denormaliserad databas - dvs en enda tabell med alla kolumner, skulle mycket information till exempel om avdelningen dupliceras eftersom det kan finnas många anställda som ingår i samma avdelning.
Därför för att minska dessa dubbleringar och spara på lagring hålls databaser i ett normaliserat tillstånd.
Så i det här fallet hänvisar vi till avdelningen med ett fält Department_id i tabellen ANSTÄLLDA och all relevant information relaterad till avdelningen - som avdelningsinfo, avdelningschef etc. kan sparas som en del av tabellen EMPLOYEE_DEPARTMENT.
Så i ett nötskal - EMPLOYEE och EMPLOYEE_DEPARTMENT är länkade till varandra genom fältet Department_id, som fungerar som en UTLÄNDSK NYCKEL för tabellen EMPLOYEE och PRIMARY KEY för tabellen EMPLOYEE_DEPARTMENT.
Bilden nedan är en bildrepresentation som har en relation mellan båda dessa tabeller med hjälp av Begränsning av främmande nycklar
MySQL GÅ MED
MySQL JOIN används för att hämta, uppdatera eller ta bort data från två eller fler tabeller mot ett visst tillstånd. Följaktligen används JOIN alltid tillsammans med SELECT-, UPDATE- eller DELETE-uttalanden
Syntax för JOIN-kommandot:
GÅ MED med VÄLJ
SELECT {column_list} FROM tableName1 {joinType} tableName2 ON {joinCondition}
GÅ MED UPDATE
DELETE FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
GÅ MED med DELETE
UPDATE tableName1 SET targetColumn = targetValue FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
Observera att JOIN kan tillämpas på flera tabeller i en enda fråga, men för enkelhetens skull försöker vi först förstå att använda Joins med två tabeller.
De olika delarna av syntaxen inkluderar:
- {kolumnlista} - Detta representerar namnen på kolumner som vi vill hämta som resultat av vår fråga.
- {JoinType} - Detta indikerar vilken typ av anslutning som vi ansöker om. Det finns följande olika typer av JOINS som kan hämta data:
- INRE KOPPLING
- YTTRE GÅNG
- Vänster yttre anslutning
- RÄTT YTTRE GÅ MED
- CROSS JOIN
Vi kommer att lära oss om alla dessa olika typer av MySQL JOINS i kommande avsnitt av handledningen.
- {JoinCondition} - Detta är kolumnvillkoren som skulle användas för JOIN för att fråga och hämta data.
I nästa avsnitt kommer vi att diskutera olika typer av anslutningar som finns i MySQL.
Typer av MySQL JOIN
Förberedelse av provdata
För att använda JOINS kommer vi att använda två tabeller anställd och anställd_avdelning med detaljerna nedan. Du kan använda / hänvisa till en användbar webbplats här för att generera dummydata för schemat.
Listningsfrågor för att skapa och infoga tabeller:
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'),
INRE KOPPLING
INNER JOIN är den vanligaste formen av JOIN och används mycket. Nästan alla ni borde ha använt detta någon gång. Låt oss se syntax och sedan några exempelfrågor.
Syntax:
SELECT {column_list} FROM tableName1 INNER JOIN tableName2 ON {joinCondition}
Fråga för att hämta avdelningsnamn för alla anställda från ovan angivna tabeller (anställd och anställd_avdelning):
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
Här är resultatet av ovanstående fråga:
Anställd Namn | Avdelningsnamn |
---|---|
saker | säkerhet |
WHO | Informationsteknologi |
Och | HR |
hända | HR |
Jag | Finansiera |
behov | Bokföring |
Fgit | Hushållning |
snacks | säkerhet |
snälla du | säkerhet |
Det där | Stöd |
Och | Kontraktpersonal |
iver | Kontraktpersonal |
elasticitet | Kontraktpersonal |
kropp | Kontraktpersonal |
Rättvist | Kontraktpersonal |
kontor | Försäljning |
saker | Försäljning |
irritationer | Förvaltning |
Möda | Förvaltning |
Ut | Förvaltning |
Notera: Här har vi använt alias för kolumnnamn. Exempel: Employee.name som Employee_name - bara för att göra resultaten mer läsbara och omfattande.
Låt oss ändra den här frågan så att vi bara hämtar namnen som börjar med bokstaven '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%'
Nedan är resultatet:
Anställd Namn | Avdelningsnamn | |||||
---|---|---|---|---|---|---|
snacks | 7 | 6961 Weissnat Drive Donnellyfort, MT 53947 | 6 | NULL | NULL | NULL |
irritationer | Förvaltning | |||||
elasticitet | Kontraktpersonal |
Och nu ska vi förstå INNER JOIN med hjälp av Venn Diagram enligt nedan. De resulterande raderna som returneras består av överlappande data mellan båda tabellerna som matchas mot JOIN-villkoret.
YTTRE GÅNG
OUTER JOIN används för att hämta data från två eller flera tabeller med undantag för att inkludera omatchade rader (eller rader som har nolldata för de förfrågade kolumnerna).
För att förstå Yttre anslutning bättre, lägg till en ny tabell office_locations med fält - id och adress och lägg till en ny kolumn med namnet `office_id 'i den ursprungligen skapade anställdstabellen.
Här är frågorna för samma:
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;
Se nedan Venn Diagram för att förstå YTTRE FÖRENINGAR bildligt:
Det finns två typer av OUTER JOINs
a) Vänster yttre anslutning
Som namnet antyder skulle den här typen av anslutning hämta alla raderna (inklusive NULL-värden) från tabellen som finns på vänster sida av JOIN-frågan. Med enkla ord returneras alla resultat / rader som inte matchar JOIN-villkoret med resultatet med NULL-värden för rätt tabell.
Till exempel, vi behöver platsdata för alla anställda - dvs. ta reda på vad som är kontorsadressen för alla anställda.
SELECT * from Employee LEFT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Output av ovanstående fråga:
namn | Id | Adress | Department_id | Office_id | Kontorsadress | Id |
---|---|---|---|---|---|---|
Jag | 1 | 640 Damon Junction East Mathew, NY 68818 | 3 | NULL | NULL | NULL |
irritationer | två | 6658 Hollis Club Ernamouth, TX 19743 | 10 | 1 | Bangalore | 1 |
kontor | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | två | Mumbai | två |
saker | 4 | 91067 Geovany Fort) Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
Och | 5 | 7647 Reva Shores Suite 970 Nya Audrafort, OH 17846-5397 | två | NULL | NULL | NULL |
Och | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | två | Mumbai | två |
iver | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, CA 45675 | 8 | 1 | Bangalore | 1 |
hända | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | två | två | Mumbai | två |
saker | 10 | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
WHO | elva | 42928 Ernesto Trail East Jules, WV 87169-2851 | 1 | NULL | NULL | NULL |
Det där | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | två | Mumbai | två |
Möda | 13 | 22811 Liliana Trail Apt. 890 South Ernesto, MT 04134 | 10 | NULL | NULL | NULL |
Ut | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | 1 | Bangalore | 1 |
elasticitet | femton | 411 Louisa Mill South Maximefort, MA 04903 | 8 | två | Mumbai | två |
behov | 16 | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4 | 1 | Bangalore | 1 |
FLED | 17 | 3647 Rosalinda Corner Maureenstad, RI 96605 | 5 | NULL | NULL | NULL |
kropp | 18 | 03559 Nicholas Circle Apt. 364 West Zettaberg, ID 58592-3447 | 8 | två | Mumbai | två |
eller | 19 | 56111 Alysson Gateway Apt. 212 Leschbury, VT 90605-2306 | 8 | NULL | NULL | NULL |
snälla du | tjugo | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
b) HÖGER YTTRE GÅ MED
I likhet med LEFT JOIN returneras i denna typ av Join alla poster som inte matchar från höger tabell med NULL-värden i kolumnerna för vänster sidotabell.
youtube till mp3-omvandlare med bild
Till exempel, med våra provtabeller, om vi kör RIGHT JOIN mot samma fråga som vi använde för LEFT JOIN, kommer vi att få NULL-värden för städerna 'Seattle' och 'Santa Clara' eftersom det inte finns några rader i tabellen Anställda som har platsuppsättning till dessa värden.
SELECT * from Employee RIGHT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Output av ovanstående fråga:
namn | Id | Adress | Department_id | Office_id | Kontorsadress | Id |
---|---|---|---|---|---|---|
snälla du | tjugo | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
irritationer | två | 6658 Hollis Club Ernamouth, TX 19743 | 10 | 1 | Bangalore | 1 |
saker | 4 | 91067 Geovany Fort Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
iver | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, CA 45675 | 8 | 1 | Bangalore | 1 |
saker | 10 | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
Ut | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | 1 | Bangalore | 1 |
behov | 16 | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4 | 1 | Bangalore | 1 |
kontor | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | två | Mumbai | två |
Och | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | två | Mumbai | två |
hända | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | två | två | Mumbai | två |
Det där | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | två | Mumbai | två |
elasticitet | femton | 411 Louisa Mill South Maximefort, MA 04903 | 8 | två | Mumbai | två |
kropp | 18 | 03559 Nicholas Circle Apt. 364 West Zettaberg, ID 58592-3447 | 8 | två | Mumbai | två |
NULL | NULL | NULL | NULL | NULL | Seattle | 3 |
NULL | NULL | NULL | NULL | NULL | Santa Clara | 4 |
Anteckningar / tips:
- I andra relationsdatabaser som Microsoft SQL kan du hitta en annan typ av OUTER JOIN som heter FULL OUTER JOIN. Det är inget annat än en kombination av både INNER och OUTER Joins - dvs. det kommer att returnera NULL-värden från både VÄNSTER och HÖGER.
- För en detaljerad diskussion tillsammans med förklaringar och exempel på skillnader mellan INRE och YTTRE FÖRENINGAR, se vår handledning här.
- I frågorna OUTER JOIN - RIGHT OUTER JOIN och LEFT OUTER JOIN kan bara specificeras som RIGHT JOIN respektive LEFT JOIN för mer läsbarhet.
CROSS JOIN
CROSS JOIN kallas också Cartesian Product. Det returnerar ett resultat mot matchande anslutningsvillkor med totalt m x n rader där m och n är ett antal matchande rader i tabell 1 och tabell 2 mot JOIN-villkoret.
Låt oss se exempelfråga för en CROSS JOIN för att få resultat från två tabeller - anställd och office_locations
SELECT * from Employee CROSS JOIN office_locations
Den returnerade utgången kommer att innehålla totalt 80 rader vilket är ingenting annat än produkten av rader i båda tabellerna - Anställd (20) x office_locations (4) => 80
Vänligen notera att, medan du gör CROSS JOIN behöver du inte ange något JOIN-tillstånd eftersom du ändå skulle få m x n resultat.
Anteckningar / tips:
Du kommer inte hitta många gånger med CROSS JOIN, eftersom det inte har många användningsfall associerade. Denna anslutning utförs vanligtvis när någon vill få alla möjliga kombinationer mot data från två tabeller.
Till exempel: Antag att du är en klädexportör och att du har två tabeller - en med färgdata och en annan med storleksdata. Här, för att säkerställa inventering, kan du överväga att göra en CROSS JOIN av båda borden för att säkerställa att alla plagg anskaffas för alla storlekar och färgkombinationer.
SJÄLV GÅR MED
SELF JOIN är precis som alla andra INNER eller OUTER Join, med de enda undantagen att båda tabellerna, dvs tabellen Joining och Joined, är desamma.
Vi använder i allmänhet SELF Joins när vi vill ta reda på förhållandet mellan raderna i samma tabell. Till exempel, om en tabell har både anställd och id: n för anställd, kan vi gå med i tabellen mot sig själv om vi vill ta reda på chefens namn mot anställdas namn.
Observera att för SELF JOIN bör du använda tabellalias så att anslutningsvillkor kan anges med hänvisning till rätt tabell.
Låt oss se ett exempel här:
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
Här har vi gått med i tabellen Anställd för sig själv för att ta reda på de anställdas namn som har samma kontor och avdelning
Anställd 1 | Anställd 2 |
---|---|
Och | elasticitet |
irritationer | irritationer |
irritationer | Ut |
Oficiis | kontor |
saker | saker |
saker | snälla du |
Och | Och |
Och | kropp |
iver | iver |
hända | hända |
saker | saker |
Det där | Det där |
Ut | irritationer |
Ut | Ut |
elasticitet | Och |
elasticitet | elasticitet |
elasticitet | kropp |
behov | behov |
kropp | Och |
kropp | elasticitet |
kropp | kropp |
snälla du | saker |
snälla du | snälla du |
Som vi hade diskuterat har SELF JOIN bara att gå med och gå med tabeller som samma, vi kan använda SELF JOIN med INNER eller OUTER Joins.
MySQL GÅ MED MED UPPDATERING OCH RADERA
Hittills har vi diskuterat Joins with SELECT uttalanden. Joins kan dock också användas med MySQL DELETE- och UPDATE-uttalanden.
Syntaksen förblir densamma här. Låt oss se några exempel för att bättre förstå konceptet.
UPPDATERA MED INNER JOIN
Antag att vi vill ändra adressen i tabellen Anställd till namnet på kontorsplatsen som finns i tabellen office_locations. Här kan vi använda INNER JOIN för att hämta stadens namn från office_locations och uppdatera samma fråga.
Exempelfråga:
UPDATE Employee emp inner join office_locations off_loc on emp.office_id = off_loc.id set emp.address = off_loc.address;
I likhet med detta kan UPDATE också användas med andra typer av anslutningar, beroende på kravet mot specifika användningsfall.
RADERA MED INNER JOIN
Vi använder tabeller, anställda och anställda_avdelningar som exempel. Antag att vi vill ta bort alla anställdsposter som tillhör försäljningsavdelningen och att vi också vill ta bort posten för försäljningsavdelningen.
Eftersom vi använde Department_id som utländsk nyckelbegränsning, bör vi därför först släppa den begränsningen innan vi använder DELETE med JOIN för flera tabeller.
Låt oss först ta reda på namnet på begränsningen som skapades för Department_id i tabellen Anställda. Kör bara kommandot för att få kommandot CREATE TABLE.
show create table Employee
Du får utdata som:
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
Nu kan du hänvisa namnet på FOREIGN_KEY-begränsningen från ovanstående kommando som är 'Employee_ibfk_1' och vi kan använda det här namnet för att släppa denna begränsning från tabellen Anställd genom att köra kommandot nedan:
alter table Employee drop constraint Employee_ibfk_1
Låt oss nu köra kommandot RADERA med 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
Resultatet av detta kommando skulle vara nej. av rader raderade (och detta bör RADERA framgångsrikt från båda tabellerna som det hänvisas till i JOIN-frågan ovan)
Vanliga frågor
F # 1) Hur många typer av anslutningar finns det i MySQL?
Svar: MySQL stöder främst tre typer av anslutningar. Dessa är:
- Inre koppling
- Yttre anslutning - Vänster yttre anslutning och höger yttre anslutning
- Cross Join
F # 2) Kan anslutning bara användas för två bord?
Svar: Anslutningar kan appliceras på två eller fler än två tabeller. För det mesta används joins för 2 bord.
Nedan följer ett exempel på en INNER JOIN med tre tabeller:
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
Output av ovanstående fråga:
emp_name | avdelningsnamn | kontorsadress |
---|---|---|
Ut | Förvaltning | Bangalore |
irritationer | Förvaltning | Bangalore |
saker | säkerhet | Bangalore |
Och | Kontraktpersonal | Mumbai |
iver | Kontraktpersonal | Bangalore |
hända | HR | Mumbai |
Det där | Stöd | Mumbai |
elasticitet | Kontraktpersonal | Mumbai |
behov | Bokföring | Bangalore |
kropp | Kontraktpersonal | Mumbai |
snälla du | säkerhet | Bangalore |
F # 3) Hur använder jag tabellalias med Joins?
Svar: Alias är ett sätt att ha ett tillfälligt namn för en tabell som ska hänvisas till i en fråga. Eftersom JOIN-frågor ibland är komplexa och för att göra frågorna läsbara och undvika att hänvisa till tabellnamn för varje kolumnreferens kan vi ha förkortat namn med alias.
Låt oss skriva en INNER JOIN-fråga för att hämta data för alla anställdas namn och avdelningsnamn från tabellerna Anställd respektive anställd_avdelningar.
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
I ovanstående fråga kan du se att vi har aliaserad anställdstabell som emp och Employee_Department-tabell som avdelning och använt alias för att referera till kolumnnamn och anslutningsvillkor.
F # 4) Vad är CROSS JOIN?
Svar: CROSS JOIN är en typ av Join där användaren vill hämta den kartesiska produkten från de tabeller som går med.
Resultatet av CROSS JOIN är m x n där m är antalet matchande rader i den första tabellen och n är antalet matchande rader i den andra tabellen.
F # 5) Hur man får FULL OUTER JOIN i MySQL
Svar: MySQL tillhandahåller inte FULL OUTER JOIN som en separat anslutningstyp till skillnad från andra databaser som Microsoft SQL. Men för att uppnå resultat som en FULL OUTER JOIN skulle ha hämtat kan vi kombinera resultaten från VÄNSTER OUTER JOIN och RIGHT OUTER JOIN.
Till exempel kan vi hämta information om anställda och avdelningar och tillämpa fackförening på vänster och höger yttre anslutning.
Rekommenderad läsning = >> MySQL Union Operator
Slutsats
I den här handledningen lärde vi oss om olika typer av anslutningar som finns i MySQL.
Vi diskuterade INNER, OUTER, CROSS och SELF Joins och såg också hur JOIN-frågor kunde användas med UPDATE och DELETE-satser för att ha effektiva och optimerade frågor för sammanfogade data mellan 2 eller fler än 2 tabeller.
automatiserat testverktyg för webbapplikationer
JOINS är en av de vanligaste frågorna och alla som använder eller lär sig SQL-baserade databaser bör ha en grundlig förståelse för SQL Joins.
Rekommenderad läsning
- Inre anslutning mot yttre anslutning: Exakt skillnad med exempel
- MySQL Skapa vyhandledning med kodexempel
- MySQL Delete Statement - Ta bort kommandosyntax och exempel
- MySQL Insert In Table - Insert Statement Syntax & Exempel
- MySQL Update Statement Tutorial - Update Query Syntax & Exempel
- Skillnad mellan SQL Vs MySQL Vs SQL Server (med exempel)
- Vad är MySQL och varför används det?
- 20+ MongoDB-handledning för nybörjare: Gratis MongoDB-kurs