mysql join tutorial inner
Lær om forskellige MySQL JOIN-udsagn som Indre, Ydre, Kors, Venstre, Højre og Selv med syntaks og programmeringseksempler:
I denne vejledning vil vi lære om MySQL JOIN og også forstå de forskellige typer Joins, der understøttes i MySQL. JOIN i sin enkleste form kan betragtes som et middel til at hente / opdatere eller slette data fra flere tabeller mod en enkelt forespørgsel.
Så i det væsentlige kombinerer JOIN 2 eller flere tabeller for at hente data mod en given tilstand.
MySQL understøtter også andre forskellige måder at forespørge på data fra flere tabeller ved hjælp af - underforespørgsler og ved at kombinere flere forespørgsler ved hjælp af UNION osv.
Hvad du vil lære:
Normaliserede tabeller
I normaliserede MySQL-databaser har tabeller forhold til almindelige kolonner ved hjælp af nøglebegrænsninger som udenlandske nøgler.
Lad os prøve at forstå dette ved hjælp af et eksempel - Antag at der er to tabeller, MEDARBEJDERE og EMPLOYEE_DEPARTMENT. Nu i en denormaliseret database - dvs. en enkelt tabel med alle kolonnerne, ville en masse information for eksempel om afdelingen blive duplikeret, da der kan være mange medarbejdere, der er en del af den samme afdeling.
Derfor, for at reducere disse duplikationer og spare på lager, holdes databaser i en normaliseret tilstand.
Så i dette tilfælde henviser vi til afdelingen ved hjælp af et felt Department_id i tabellen MEDARBEJDERE, og al relevant information relateret til afdelingslignende afdelingsinfo, afdelingsleder osv. Kan opbevares som en del af tabellen EMPLOYEE_DEPARTMENT.
Så i en nøddeskal - MEDARBEJDERE og EMPLOYEE_DEPARTMENT er knyttet til hinanden gennem feltet Department_id, der fungerer som UDENLANDSK NØGLE for tabellen MEDARBEJDERE og PRIMÆR NØGLE til tabellen EMPLOYEE_DEPARTMENT.
Nedenstående billede er en billedlig gengivelse, der har et forhold mellem begge disse tabeller ved hjælp af Begrænsning af udenlandsk nøgle
MySQL JOIN
MySQL JOIN bruges til at hente, opdatere eller slette data fra 2 eller flere tabeller mod en given tilstand. Derfor bruges JOIN altid sammen med SELECT-, UPDATE- eller DELETE-udsagn
Syntaks for JOIN-kommando:
Deltag i SELECT
SELECT {column_list} FROM tableName1 {joinType} tableName2 ON {joinCondition}
Deltag med UPDATE
DELETE FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
Deltag i med DELETE
UPDATE tableName1 SET targetColumn = targetValue FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
Bemærk, at JOIN kunne anvendes på flere tabeller i en enkelt forespørgsel, men for at gøre det nemmere, lad os først prøve at forstå brugen af Joins med 2 tabeller.
De forskellige dele af syntaksen inkluderer:
- {kolonne_liste} - Dette repræsenterer navnene på kolonner, vi vil hente som resultat af vores forespørgsel.
- {JoinType} - Dette angiver den type tilslutning, vi anvender. Der er følgende forskellige typer JOINS, der kan hente data:
- INDRE MEDLEM
- YDRE MEDLEM
- VENSTRE YDRE MEDLEM
- HØJRE YDRE MEDLEM
- CROSS JOIN
Vi vil lære om alle disse forskellige typer MySQL JOINS i kommende sektioner af vejledningen.
- {JoinCondition} - Dette er kolonnebetingelserne, som ville blive brugt til JOIN til at forespørge og hente data.
I det næste afsnit vil vi diskutere forskellige typer Joins, der er tilgængelige i MySQL.
Typer af MySQL JOIN
Prøve data forberedelse
For at bruge JOINS bruger vi to tabeller Medarbejder og Medarbejderafdeling med nedenstående detaljer. Du kan bruge / henvise til et nyttigt sted her for at generere dummy-data til skemaet.
Listeforespørgsler til oprettelse og indsættelse af 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'),
INDRE MEDLEM
INNER JOIN er den mest almindelige form for JOIN og bruges meget udbredt. Næsten alle jer skulle have brugt dette på et eller andet tidspunkt. Lad os se syntaksen og derefter nogle eksempler på forespørgsler.
Syntaks:
SELECT {column_list} FROM tableName1 INNER JOIN tableName2 ON {joinCondition}
Forespørgsel om at hente afdelingsnavne til alle medarbejdere fra de ovennævnte tabeller (medarbejder og medarbejderafdeling):
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
Her er output fra ovenstående forespørgsel:
Ansattes navn | Afdelingsnavn |
---|---|
ting | Sikkerhed |
WHO | Informationsteknologi |
Og | HR |
ramme | HR |
jeg | Finansiere |
behov | Regnskab |
Fgit | Husholdning |
snacks | Sikkerhed |
Vær venlig | Sikkerhed |
At | Support |
Og | Kontrakt personale |
Iver | Kontrakt personale |
modstandsdygtighed | Kontrakt personale |
legeme | Kontrakt personale |
Retfærdig | Kontrakt personale |
kontorer | Salg |
ting | Salg |
irritationer | Ledelse |
Smerter | Ledelse |
Ud | Ledelse |
Bemærk: Her har vi brugt aliaser til kolonnenavn. Eksempel: Employee.name som Employee_name - bare for at gøre resultaterne mere læsbare og omfattende.
Lad os ændre denne forespørgsel for kun at hente de navne, der begynder med bogstavet '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%'
Nedenfor er output:
Ansattes navn | Afdelingsnavn | |||||
---|---|---|---|---|---|---|
snacks | 7 | 6961 Weissnat Drive Donnellyfort, MT 53947 | 6 | NUL | NUL | NUL |
irritationer | Ledelse | |||||
modstandsdygtighed | Kontrakt personale |
Og lad os nu forstå INNER JOIN ved hjælp af Venn Diagram som nedenfor. De resulterende rækker, der returneres, består af de overlappende data mellem begge tabeller, som matches med JOIN-betingelsen.
YDRE MEDLEM
OUTER JOIN bruges til at hente data fra 2 eller flere tabeller med undtagelse af at inkludere umatchede rækker (eller rækker, der har nulldata til de forespurgte kolonner).
For at forstå Outer Join bedre, tilføj en ny tabel office_locations med felter - id og adresse og tilføj en ny kolonne med navnet `office_id` til den oprindeligt oprettede medarbejdertabel.
Her er forespørgslerne for det samme:
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 venligst nedenstående Venn-diagram for at forstå OUTER JOINS billedligt:
Der er 2 typer OUTER JOINs
a) VENSTRE YDRE MEDLEM
Som navnet antyder, ville denne type tilslutning hente alle rækkerne (inklusive NULL-værdier) fra tabellen, der er på venstre side af JOIN-forespørgslen. Med enkle ord returneres alle resultater / rækker, der ikke matcher JOIN-betingelsen, med resultatet med NULL-værdier for den rigtige tabel.
For eksempel, vi har brug for placeringsdata for alle medarbejderne - dvs. find ud af, hvad der er kontoradressen for alle medarbejderne.
SELECT * from Employee LEFT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Output af ovenstående forespørgsel:
Navn | Id | Adresse | Department_id | Office_id | Kontoradresse | Id |
---|---|---|---|---|---|---|
jeg | 1 | 640 Damon Junction East Mathew, NY 68818 | 3 | NUL | NUL | NUL |
irritationer | to | 6658 Hollis Club Ernamouth, TX 19743 | 10 | 1 | Bangalore | 1 |
kontorer | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | to | Mumbai | to |
ting | 4 | 91067 Geovany Fort) Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
Og | 5 | 7647 Reva Shores Suite 970 New Audrafort, OH 17846-5397 | to | NUL | NUL | NUL |
Og | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | to | Mumbai | to |
Iver | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, CA 45675 | 8 | 1 | Bangalore | 1 |
ramme | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | to | to | Mumbai | to |
ting | 10 | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
WHO | elleve | 42928 Ernesto Trail East Jules, WV 87169-2851 | 1 | NUL | NUL | NUL |
At | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | to | Mumbai | to |
Smerter | 13 | 22811 Liliana Trail Apt. 890 South Ernesto, MT 04134 | 10 | NUL | NUL | NUL |
Ud | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | 1 | Bangalore | 1 |
modstandsdygtighed | femten | 411 Louisa Mill Syd Maximefort, MA 04903 | 8 | to | Mumbai | to |
behov | 16 | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4 | 1 | Bangalore | 1 |
FLYDT | 17 | 3647 Rosalinda Corner Maureenstad, RI 96605 | 5 | NUL | NUL | NUL |
legeme | 18 | 03559 Nicholas Circle Apt. 364 West Zettaberg, ID 58592-3447 | 8 | to | Mumbai | to |
eller | 19 | 56111 Alysson Gateway Apt. 212 Leschbury, VT 90605-2306 | 8 | NUL | NUL | NUL |
Vær venlig | tyve | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
b) HØJRE YDRE MEDLEM
I lighed med LEFT JOIN returneres i denne type Join alle de poster, der ikke matcher fra højre tabel, med NULL-værdier i kolonnerne til venstre sidetabel.
Niveau 1 helpdesk interview spørgsmål
For eksempel, med vores eksempeltabeller, hvis vi kører RIGHT JOIN mod den samme forespørgsel, som vi brugte til LEFT JOIN, får vi NULL-værdier for byer 'Seattle' og 'Santa Clara', da der ikke er nogen rækker i medarbejdertabellen, der har placeringssæt til disse værdier.
SELECT * from Employee RIGHT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Output af ovenstående forespørgsel:
Navn | Id | Adresse | Department_id | Office_id | Kontoradresse | Id |
---|---|---|---|---|---|---|
Vær venlig | tyve | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
irritationer | to | 6658 Hollis Club Ernamouth, TX 19743 | 10 | 1 | Bangalore | 1 |
ting | 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 |
ting | 10 | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
Ud | 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 |
kontorer | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | to | Mumbai | to |
Og | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | to | Mumbai | to |
ramme | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | to | to | Mumbai | to |
At | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | to | Mumbai | to |
modstandsdygtighed | femten | 411 Louisa Mill Syd Maximefort, MA 04903 | 8 | to | Mumbai | to |
legeme | 18 | 03559 Nicholas Circle Apt. 364 West Zettaberg, ID 58592-3447 | 8 | to | Mumbai | to |
NUL | NUL | NUL | NUL | NUL | Seattle | 3 |
NUL | NUL | NUL | NUL | NUL | Santa Clara | 4 |
Bemærkninger / tip:
- I andre relationsdatabaser som Microsoft SQL - kan du finde en anden type OUTER JOIN, der kaldes FULL OUTER JOIN. Det er intet andet end en kombination af både INNER og OUTER Joins - dvs. det returnerer NULL-værdier fra både VENSTRE og HØJRE tabeller.
- For en detaljeret diskussion sammen med forklaring og eksempler omkring forskelle mellem INDRE og YDRE SAMLING henvises til vores vejledning her.
- I OUTER JOIN-forespørgslerne - RIGHT OUTER JOIN og LEFT OUTER JOIN kunne bare specificeres som henholdsvis RIGHT JOIN og LEFT JOIN for mere læsbarhed.
CROSS JOIN
CROSS JOIN kaldes også kartesisk produkt. Det returnerer et resultat mod matchende tilslutningsbetingelser med i alt m x n rækker, hvor m og n er et antal matchende rækker i tabel 1 og tabel 2 mod JOIN-betingelsen.
skriver junit test tilfælde i java
Lad os se prøveforespørgsel til en CROSS JOIN for at få resultater fra 2 tabeller - Medarbejder og kontorlokationer
SELECT * from Employee CROSS JOIN office_locations
Det returnerede output indeholder i alt 80 rækker, hvilket kun er produktet af rækker i begge tabeller - Medarbejder (20) x office_locations (4) => 80
Bemærk, at, mens du laver CROSS JOIN behøver du ikke angive nogen JOIN-tilstand, da du alligevel ville få m x n resultat.
Bemærkninger / tip:
Du finder ikke mange gange ved at bruge CROSS JOIN, da det ikke har mange brugssager tilknyttet. Dette Join udføres normalt, når nogen søger at få alle mulige kombinationer mod data fra 2 tabeller.
For eksempel: Antag at du er eksportør af tøj, og at du har to tabeller - en med farvedata og en anden med størrelsesdata. Her, for at sikre lagerbeholdning, kan du overveje at lave en CROSS JOIN af begge borde for at sikre, at alle beklædningsgenstande købes til alle størrelses- og farvekombinationer.
SELV BLIVER MED
SELF JOIN er ligesom enhver anden INNER eller OUTER Join, med de eneste undtagelser, at begge tabeller, dvs. Joining og Joined-tabellen, er de samme.
Vi bruger generelt SELF Joins, når vi vil finde ud af forholdet mellem rækker i samme tabel. For eksempel, hvis en tabel har både medarbejder-id og tilsynsførende medarbejder-id, kan vi deltage i tabellen mod sig selv, hvis vi ønsker at finde ud af lederens navn mod medarbejderens navn.
Bemærk, at for SELF JOIN skal du bruge tabelaliaser, så deltagelsesbetingelser kan specificeres med henvisning til den korrekte tabel.
Lad os se et eksempel her:
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
Her har vi tilsluttet sig medarbejdertabellen for at finde ud af medarbejdernavne, der har samme kontor og afdeling
Medarbejder 1 | Medarbejder2 |
---|---|
Og | modstandsdygtighed |
irritationer | irritationer |
irritationer | Ud |
Oficiis | kontorer |
ting | ting |
ting | Vær venlig |
Og | Og |
Og | legeme |
Iver | Iver |
ramme | ramme |
ting | ting |
At | At |
Ud | irritationer |
Ud | Ud |
modstandsdygtighed | Og |
modstandsdygtighed | modstandsdygtighed |
modstandsdygtighed | legeme |
behov | behov |
legeme | Og |
legeme | modstandsdygtighed |
legeme | legeme |
Vær venlig | ting |
Vær venlig | Vær venlig |
Som vi havde diskuteret, har SELF JOIN bare sammenføjning og sammenføjede tabeller som de samme, vi kan bruge SELF JOIN med INNER eller OUTER Joins.
MySQL Deltag med UPDATE og SLET
Indtil videre har vi diskuteret Joins med SELECT-udsagn. Dog kan Joins også bruges med MySQL DELETE og UPDATE udsagn.
Syntaksen forbliver den samme her. Lad os se et par eksempler for at forstå konceptet bedre.
OPDATERING MED INNER JOIN
Antag, at vi vil ændre adressen i tabellen Medarbejder til navnet på den kontorplacering, der findes i tabellen office_locations. Her kan vi bruge INNER JOIN til at hente bynavnet fra office_locations og opdatere den samme forespørgsel.
Eksempel på forespørgsel:
UPDATE Employee emp inner join office_locations off_loc on emp.office_id = off_loc.id set emp.address = off_loc.address;
I lighed med dette kan UPDATE også bruges med andre typer Joins afhængigt af kravet mod specifikke brugssager.
Slet med INNER JOIN
Vi bruger tabeller, Medarbejder og Medarbejderafdelinger som eksempel. Antag, at vi vil slette alle medarbejderregistreringer, der hører til salgsafdelingen, og vi vil også slette posten for salgsafdelingen.
Da vi brugte Department_id som UDENLANDSK KEY-begrænsning, bør vi derfor først DROP denne begrænsning, før vi bruger SLET med JOIN til flere tabeller.
Lad os først finde ud af navnet på den begrænsning, der blev oprettet for Department_id i tabellen Medarbejder. Kør blot kommandoen for at få kommandoen Opret TABEL.
show create table Employee
Du får output 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 henvise navnet på FOREIGN_KEY-begrænsningen fra ovenstående kommando, som er 'Employee_ibfk_1', og vi kan bruge dette navn til at slippe denne begrænsning fra medarbejdertabellen ved at køre nedenstående kommando:
alter table Employee drop constraint Employee_ibfk_1
Lad os nu køre kommandoen SLET 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
Output af denne kommando ville være nej. af rækker slettet (og dette skal med succes SLETTE rækkerne fra begge de tabeller, der henvises til i JOIN-forespørgslen ovenfor)
Ofte stillede spørgsmål
Q # 1) Hvor mange typer Joins er der i MySQL?
Svar: MySQL understøtter primært 3 typer Joins. Disse er:
- Indvendig sammenføjning
- Ydre samling - Venstre ydre samling og højre ydre samling
- Cross Join
Q # 2) Kan Join kun bruges til 2 borde?
Svar: Forbindelser kan anvendes på 2 eller flere end 2 tabeller. For det meste bruges Joins til 2 borde.
Nedenfor er et eksempel på en INNER JOIN ved hjælp af 3 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 af ovenstående forespørgsel:
emp_name | dept_name | office_location |
---|---|---|
Ud | Ledelse | Bangalore |
irritationer | Ledelse | Bangalore |
ting | Sikkerhed | Bangalore |
Og | Kontrakt personale | Mumbai |
Iver | Kontrakt personale | Bangalore |
ramme | HR | Mumbai |
At | Support | Mumbai |
modstandsdygtighed | Kontrakt personale | Mumbai |
behov | Regnskab | Bangalore |
legeme | Kontrakt personale | Mumbai |
Vær venlig | Sikkerhed | Bangalore |
Spørgsmål nr. 3) Hvordan bruges tabelaliaser med Joins?
Svar: Aliaser er en måde at have et midlertidigt navn til en tabel, der skal henvises til i en forespørgsel. Da JOIN-forespørgsler til tider er komplekse og for at gøre forespørgslerne læsbare og undgå at henvise til tabelnavne for hver kolonnehenvisning, kan vi have forkortede navne med aliaser.
Lad os skrive en INNER JOIN-forespørgsel for at hente data for alle medarbejdernavne og afdelingsnavne fra henholdsvis tabeller medarbejder og medarbejderafdelinger.
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 ovenstående forespørgsel kan du se, at vi har aliaset medarbejdertabel som emp og Employee_Department-tabel som afdeling og brugt aliaserne til at henvise til kolonnenavne og tilslutningsbetingelser.
Q # 4) Hvad er CROSS JOIN?
Svar: CROSS JOIN er en type Join, hvor brugeren ønsker at hente det cartesianske produkt fra de tabeller, der tilsluttes.
Resultatet af CROSS JOIN er m x n, hvor m er antallet af matchende rækker i den første tabel, og n er antallet af matchende rækker i den anden tabel.
Q # 5) Sådan får du FULD OUTER JOIN i MySQL
Svar: MySQL leverer ikke FULD OUTER JOIN som en separat Join-type i modsætning til andre databaser som Microsoft SQL. For at opnå resultater som en FULD OUTER JOIN ville have hentet, kan vi imidlertid kombinere resultaterne af LEFT OUTER JOIN og RIGHT OUTER JOIN.
For eksempel kan vi hente medarbejder- og afdelingsoplysninger og anvende fagforening til venstre og højre ydre sammenføjning.
Anbefalet læsning = >> MySQL Union Operator
Konklusion
I denne vejledning lærte vi om forskellige typer Joins, der er tilgængelige i MySQL.
Vi diskuterede INNER, OUTER, CROSS og SELF Joins og så også, hvordan JOIN-forespørgsler kunne bruges med UPDATE og DELETE-sætninger for at have effektive og optimerede forespørgsler til sammenføjede data mellem 2 eller flere end 2 tabeller.
JOINS er en af de mest basale forespørgsler, og enhver, der bruger eller lærer SQL-baserede databaser, skal have en grundig forståelse af SQL Joins.
Anbefalet læsning
- Indre sammenføjning mod ydre sammenføjning: Præcis forskel med eksempler
- MySQL Opret visningsvejledning med kodeeksempler
- MySQL Delete Statement - Slet kommandosyntaks og eksempler
- MySQL indsæt i tabel - Indsæt erklæringens syntaks og eksempler
- MySQL Update Statement Tutorial - Update Query Syntax & Eksempler
- Forskellen mellem SQL Vs MySQL Vs SQL Server (med eksempler)
- Hvad er MySQL, og hvorfor bruges det?
- 20+ MongoDB-vejledning til begyndere: Gratis MongoDB-kursus