mysql join tutorial inner
Lær om forskjellige MySQL JOIN-uttalelser som indre, ytre, kryss, venstre, høyre og selv med syntaks og programmeringseksempler:
I denne opplæringen vil vi lære om MySQL JOIN og også forstå de forskjellige typene Joins som støttes i MySQL. JOIN i sin enkleste form kan betraktes som et middel til å hente / oppdatere eller slette data fra flere tabeller mot en enkelt spørring.
Så i hovedsak kombinerer JOIN to eller flere tabeller for å hente data mot en gitt tilstand.
MySQL støtter også andre forskjellige måter å spørre data fra flere tabeller ved hjelp av - underspørsmål og ved å kombinere flere spørsmål ved hjelp av UNION, etc.
Hva du vil lære:
- Normaliserte tabeller
- MySQL BLI MED
- Typer av MySQL JOIN
- MySQL BLI MED MED OPPDATERING OG SLETTING
- Konklusjon
Normaliserte tabeller
I normaliserte MySQL-databaser har tabeller forhold til vanlige kolonner ved hjelp av nøkkelbegrensninger som utenlandske nøkler.
La oss prøve å forstå dette ved hjelp av et eksempel - Anta at det er to bord, MEDARBEIDER og EMPLOYEE_DEPARTMENT. Nå i en denormalisert database - dvs. en enkelt tabell med alle kolonnene, vil mye informasjon, for eksempel om avdelingen, dupliseres, da det kan være mange ansatte som er en del av samme avdeling.
Derfor, for å redusere duplikasjonene og lagre lagring, holdes databaser i normalisert tilstand.
Så i dette tilfellet, vil vi henvise til avdelingen med et felt Department_id i ANSATTE-tabellen, og all relevant informasjon relatert til avdelingsinformasjon, avdelingsinfo, avdelingsleder osv. Kan oppbevares som en del av EMPLOYEE_DEPARTMENT-tabellen.
Så i et nøtteskall - EMPLOYEE og EMPLOYEE_DEPARTMENT er knyttet til hverandre gjennom Department_id-feltet, som fungerer som UTENLANDSK NØKKEL for EMPLOYEE-tabellen og PRIMARY KEY for EMPLOYEE_DEPARTMENT-tabellen.
Nedenfor er bildet en illustrasjon som har et forhold mellom begge disse tabellene ved hjelp av Begrensning av utenlandsk nøkkel
MySQL BLI MED
MySQL JOIN brukes til å hente, oppdatere eller slette data fra to eller flere tabeller mot en gitt tilstand. Derfor blir JOIN alltid brukt i forbindelse med SELECT-, UPDATE- eller DELETE-setninger
Syntaks for JOIN-kommando:
BLI MED med VELG
SELECT {column_list} FROM tableName1 {joinType} tableName2 ON {joinCondition}
BLI MED UPDATE
DELETE FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
BLI MED med SLETT
UPDATE tableName1 SET targetColumn = targetValue FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
Vær oppmerksom på at JOIN kan brukes på flere tabeller i ett spørsmål, men for enkelhets skyld, la oss først prøve å forstå Joins med to tabeller.
De forskjellige delene av syntaksen inkluderer:
- {kolonne_liste} - Dette representerer navnene på kolonnene vi vil hente som et resultat av spørringen vår.
- {JoinType} - Dette indikerer hvilken type sammenkobling vi søker. Det er følgende forskjellige typer JOINS som kan hente data:
- INNRE MEDLEM
- YTRE MEDLEM
- VENSTRE YTRE MEDLEM
- HØYRE YTRE BLIV MED
- CROSS JOIN
Vi vil lære om alle disse forskjellige typene MySQL JOINS i kommende deler av opplæringen.
- {JoinCondition} - Dette er kolonnebetingelsene som brukes for JOIN for å spørre og hente data.
I neste avsnitt vil vi diskutere forskjellige typer Joins som er tilgjengelige i MySQL.
Typer av MySQL JOIN
Eksempel på forberedelse av data
For å bruke JOINS bruker vi to tabeller Employee and Employee_Department med detaljene nedenfor. Du kan bruke / henvise til et nyttig nettsted her for å generere dummy data for skjemaet.
Listing Queries for tabelloppretting og innsetting:
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'),
INNRE MEDLEM
INNER JOIN er den vanligste formen for JOIN og brukes veldig mye. Nesten alle dere burde ha brukt dette på et eller annet tidspunkt. La oss se syntaksen og noen eksempler på spørsmål.
Syntaks:
SELECT {column_list} FROM tableName1 INNER JOIN tableName2 ON {joinCondition}
Spørsmål om å hente avdelingsnavn for alle ansatte fra de ovennevnte deklarerte tabellene (ansatt og ansatt_avdeling):
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 resultatet av spørringen ovenfor:
Arbeidstakers navn | Avdelingsnavn |
---|---|
tingene | Sikkerhet |
WHO | Informasjonsteknologi |
Og | HR |
ramme | HR |
Jeg | Finansiere |
behov | Regnskap |
Fgit | Renhold |
snacks | Sikkerhet |
vær så snill | Sikkerhet |
At | Brukerstøtte |
Og | Kontraktsmedarbeidere |
iver | Kontraktsmedarbeidere |
motstandsdyktighet | Kontraktsmedarbeidere |
kropp | Kontraktsmedarbeidere |
Rettferdig | Kontraktsmedarbeidere |
kontorer | Salg |
tingene | Salg |
irritasjoner | Ledelse |
Smerter | Ledelse |
Ute | Ledelse |
Merk: Her har vi brukt aliaser for kolonnenavn. Eksempel: Employee.name som Employee_name - bare for å gjøre resultatene mer lesbare og omfattende.
La oss endre dette spørsmålet for å hente bare navnene som begynner 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%'
Nedenfor er utgangen:
Arbeidstakers navn | Avdelingsnavn | |||||
---|---|---|---|---|---|---|
snacks | 7 | 6961 Weissnat Drive Donnellyfort, MT 53947 | 6 | NULL | NULL | NULL |
irritasjoner | Ledelse | |||||
motstandsdyktighet | Kontraktsmedarbeidere |
Og la oss nå forstå INNER JOIN ved hjelp av Venn Diagram som nedenfor. De resulterende returnerte radene består av de overlappende dataene mellom begge tabellene i samsvar med JOIN-tilstanden.
YTRE MEDLEM
OUTER JOIN brukes til å hente data fra to eller flere tabeller, med unntak av å inkludere umatchede rader (eller rader med nulldata for de spurte kolonnene) også.
For å forstå Outer Join bedre, legg til en ny tabell office_locations som har felt - id og adresse og legg til en ny kolonne med navnet `office_id` til den opprinnelig opprettet medarbeidertabellen.
Her er spørsmålene 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 Venn-diagrammet nedenfor for å forstå OUTER JOINS bildemessig:
Det finnes to typer YTRE JOINs
a) VENSTRE YTRE MEDLEM
Som navnet antyder, vil denne typen Join hente alle radene (inkludert NULL-verdier) fra tabellen som er på venstre side av JOIN-spørringen. Med enkle ord vil alle resultater / rader som ikke samsvarer med JOIN-tilstanden returneres med resultatet som har NULL-verdier for riktig tabell.
For eksempel, vi trenger stedsdata for alle ansatte - dvs. finne ut hva som er kontoradressen til alle ansatte.
SELECT * from Employee LEFT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Resultat av ovennevnte spørring:
Navn | Id | Adresse | Avdeling_id | Office_id | Kontor adresse | Id |
---|---|---|---|---|---|---|
Jeg | 1 | 640 Damon Junction East Mathew, NY 68818 | 3 | NULL | NULL | NULL |
irritasjoner | 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 |
tingene | 4 | 91067 Geovany Fort] Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
Og | 5 | 7647 Reva Shores Suite 970 New Audrafort, OH 17846-5397 | to | NULL | NULL | NULL |
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 |
tingene | 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 | NULL | NULL | NULL |
At | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | to | Mumbai | to |
Smerter | 1. 3 | 22811 Liliana Trail Apt. 890 South Ernesto, MT 04134 | 10 | NULL | NULL | NULL |
Ute | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | 1 | Bangalore | 1 |
motstandsdyktighet | femten | 411 Louisa Mill Sør-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 | NULL | NULL | NULL |
kropp | 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 | NULL | NULL | NULL |
vær så snill | tjue | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
b) HØYRE YTRE MEDLEM
I likhet med LEFT JOIN returneres i denne typen Join alle postene som ikke samsvarer fra høyre tabell med NULL-verdier i kolonnene til venstre sidetabell.
implementering av dijkstras algoritme i java
For eksempel, Hvis vi kjører RIGHT JOIN mot det samme spørringen som vi brukte for LEFT JOIN, får vi NULL-verdier for byene 'Seattle' og 'Santa Clara', da det ikke er noen rader i tabellen med ansatte som har plassering til disse verdiene.
SELECT * from Employee RIGHT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Resultat av ovennevnte spørring:
Navn | Id | Adresse | Avdeling_id | Office_id | Kontor adresse | Id |
---|---|---|---|---|---|---|
vær så snill | tjue | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
irritasjoner | to | 6658 Hollis Club Ernamouth, TX 19743 | 10 | 1 | Bangalore | 1 |
tingene | 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 |
tingene | 10 | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
Ute | 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 |
motstandsdyktighet | femten | 411 Louisa Mill Sør-Maximefort, MA 04903 | 8 | to | Mumbai | to |
kropp | 18 | 03559 Nicholas Circle Apt. 364 West Zettaberg, ID 58592-3447 | 8 | to | Mumbai | to |
NULL | NULL | NULL | NULL | NULL | Seattle | 3 |
NULL | NULL | NULL | NULL | NULL | Santa Clara | 4 |
Merknader / tips:
- I andre relasjonsdatabaser som Microsoft SQL - kan du finne en annen type OUTER JOIN som kalles FULL OUTER JOIN. Det er ingenting annet enn en kombinasjon av både INNER og OUTER Joins - dvs. det vil returnere NULL-verdier fra både VENSTRE og HØYRE tabeller.
- For en detaljert diskusjon sammen med forklaring og eksempler rundt forskjeller mellom INNRE og YTRE JOINS, se vår veiledning her.
- I spørsmålene OUTER JOIN - RIGHT OUTER JOIN og LEFT OUTER JOIN kan bare spesifiseres som henholdsvis RIGHT JOIN og LEFT JOIN for mer lesbarhet.
CROSS JOIN
CROSS JOIN kalles også Cartesian Product. Det returnerer et resultat mot samsvarende Join-forhold med totalt m x n rader hvor m og n er et antall matchende rader i tabell 1 og tabell 2 mot JOIN-tilstanden.
La oss se eksempelspørring for en CROSS JOIN for å få resultater fra to tabeller - Ansatt og kontor_lokasjoner
SELECT * from Employee CROSS JOIN office_locations
Den returnerte utgangen vil inneholde totalt 80 rader, som ikke er noe annet enn produktet av rader i begge tabellene - Ansatt (20) x office_locations (4) => 80
Vær oppmerksom på at, mens du gjør CROSS JOIN trenger du ikke spesifisere noen JOIN-tilstand, ettersom du uansett ville få m x n resultat.
Merknader / tips:
Du finner ikke mange ganger ved å bruke CROSS JOIN, da det ikke har mange brukssaker tilknyttet. Denne sammenkoblingen utføres vanligvis når noen ønsker å få alle mulige kombinasjoner mot data fra to tabeller.
For eksempel: Anta at du er en eksportør av klær og at du har to tabeller - en har fargedata og en annen har størrelsesdata. Her, for å sikre varelager, kan du vurdere å gjøre en CROSS JOIN av begge bordene for å sikre at alle plaggene blir anskaffet for alle størrelser og fargekombinasjoner.
SELV BLIR MED
SELF JOIN er akkurat som alle andre INNER- eller OUTER Join, med de eneste unntakene at begge bordene, dvs. sammenføyning og sammenføyning, er de samme.
Vi bruker vanligvis SELF Joins når vi vil finne ut forholdet mellom rader i samme tabell. For eksempel, hvis en tabell har både ansatt-id og veileder ansatt-id, kan vi bli med i tabellen mot seg selv hvis vi ønsker å finne ut ledernavnet mot ansattens navn.
Vær oppmerksom på at for SELF JOIN bør du bruke tabellaliaser slik at Join betingelser kan spesifiseres med henvisning til riktig tabell.
La oss 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 sluttet oss til ansatt-tabellen for å finne ut navn på ansatte som har samme kontorsted og avdeling
Ansatt1 | Ansatt 2 |
---|---|
Og | motstandsdyktighet |
irritasjoner | irritasjoner |
irritasjoner | Ute |
Oficiis | kontorer |
tingene | tingene |
tingene | vær så snill |
Og | Og |
Og | kropp |
iver | iver |
ramme | ramme |
tingene | tingene |
At | At |
Ute | irritasjoner |
Ute | Ute |
motstandsdyktighet | Og |
motstandsdyktighet | motstandsdyktighet |
motstandsdyktighet | kropp |
behov | behov |
kropp | Og |
kropp | motstandsdyktighet |
kropp | kropp |
vær så snill | tingene |
vær så snill | vær så snill |
Som vi hadde diskutert, er SELF JOIN bare å ha sammenføyde og sammenføyde tabeller som det samme, vi kan bruke SELF JOIN med INNER eller OUTER Joins.
MySQL BLI MED MED OPPDATERING OG SLETTING
Så langt har vi diskutert Joins with SELECT-uttalelser. Imidlertid kan Joins også brukes med MySQL DELETE og UPDATE uttalelser.
Syntaksen forblir den samme her. La oss se et par eksempler for å forstå konseptet bedre.
OPPDATERING MED INNER JOIN
Anta at vi vil endre adressen i tabellen Medarbeidere til navnet på kontorstedet som er tilstede i tabellen office_locations. Her kan vi bruke INNER JOIN for å hente bynavnet fra office_locations og oppdatere det samme spørringen.
Eksempel på spørsmål:
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 dette kan UPDATE også brukes med andre typer Joins, avhengig av kravet mot spesifikke brukssaker.
SLETT MED INNER JOIN
Vi vil bruke tabeller, ansatt og ansatt_avdelinger som eksempel. Anta at vi vil slette alle medarbeideroppføringene som tilhører salgsavdelingen, og at vi også vil slette oppføringen for salgsavdelingen.
Siden vi brukte Department_id som UTENLANDSK Nøkkelbegrensning, bør vi derfor først SLippe den begrensningen før vi bruker SLETTE med JOIN for flere tabeller.
La oss først finne ut navnet på begrensningen som ble opprettet for Department_id i medarbeidertabellen. Bare kjør kommandoen for å få CREATE TABLE-kommandoen.
show create table Employee
Du får utdataene 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
Nå kan du henvise til navnet på FOREIGN_KEY-begrensningen fra kommandoen ovenfor som er 'Employee_ibfk_1', og vi kan bruke dette navnet til å slippe denne begrensningen fra tabellen Employee ved å kjøre kommandoen nedenfor:
alter table Employee drop constraint Employee_ibfk_1
La oss nå kjøre DELETE-kommandoen 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 denne kommandoen vil være nei. av rader slettet (og dette skal SLETTE radene fra begge tabellene det er referert til i JOIN-spørringen ovenfor).
ofte stilte spørsmål
Q # 1) Hvor mange typer Joins er det i MySQL?
Svar: MySQL støtter primært 3 typer Joins. Disse er:
- Indre sammenføyning
- Ytre skjøte - Venstre ytre skjøte og høyre ytre skjøte
- Cross Join
Q # 2) Kan Join bare brukes til to bord?
Svar: Forbindelser kan brukes på to eller flere enn to bord. Oftest brukes Joins til 2 bord.
Nedenfor er et eksempel på en INNER JOIN ved hjelp av 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
Resultat av ovennevnte spørring:
emp_name | avd. navn | office_location |
---|---|---|
Ute | Ledelse | Bangalore |
irritasjoner | Ledelse | Bangalore |
tingene | Sikkerhet | Bangalore |
Og | Kontraktsmedarbeidere | Mumbai |
iver | Kontraktsmedarbeidere | Bangalore |
ramme | HR | Mumbai |
At | Brukerstøtte | Mumbai |
motstandsdyktighet | Kontraktsmedarbeidere | Mumbai |
behov | Regnskap | Bangalore |
kropp | Kontraktsmedarbeidere | Mumbai |
vær så snill | Sikkerhet | Bangalore |
Q # 3) Hvordan bruke tabellaliaser med Joins?
Svar: Aliaser er en måte å ha et midlertidig navn på en tabell som det skal henvises til i et spørsmål. Siden JOIN-spørsmål er til tider komplekse og for å gjøre spørsmålene lesbare og unngå å referere til tabellnavn for hver kolonnehenvisning, kan vi ha forkortet navn med aliaser.
La oss skrive et INNER JOIN-spørsmål for å hente data for alle ansattnavn og avdelingsnavn fra henholdsvis tabeller Ansatt og ansatt_avdelinger.
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 spørringen ovenfor kan du se at vi har aliasert ansatt-tabell som emp og Employee_Department-tabell som avdeling, og brukt aliasene for å referere til kolonnenavn og delta-betingelser.
Q # 4) Hva er CROSS JOIN?
Svar: CROSS JOIN er en type Join hvor brukeren vil hente det kartesiske produktet av bordene som blir slått sammen.
Resultatet av CROSS JOIN er m x n der m er antall samsvarende rader i den første tabellen og n er antallet av samsvarende rader i den andre tabellen.
Q # 5) Hvordan få FULL OUTER JOIN i MySQL
Svar: MySQL gir ikke FULL OUTER JOIN som en egen Join-type i motsetning til andre databaser som Microsoft SQL. For å oppnå resultater som en FULL OUTER JOIN ville ha oppnådd, kan vi imidlertid kombinere resultatene fra VENSTRE YTRE JOIN og RIGHT OUTER JOIN.
For eksempel kan vi hente medarbeider- og avdelingsdetaljer og søke fagforening på venstre og høyre ytre sammenføyning.
smart identifikasjon i qtp med eksempel
Anbefalt lesing = >> MySQL Union Operator
Konklusjon
I denne opplæringen lærte vi om forskjellige typer Joins som er tilgjengelige i MySQL.
Vi diskuterte INNER, OUTER, CROSS og SELF Joins og så også hvordan JOIN-spørsmål kunne brukes med UPDATE og DELETE-setninger for å ha effektive og optimaliserte spørsmål for Joined data mellom 2 eller flere enn 2 tabeller.
JOINS er en av de mest grunnleggende spørsmålene, og alle som bruker eller lærer SQL-baserte databaser, bør ha en grundig forståelse av SQL Joins.
Anbefalt lesing
- Indre sammenføyning mot ytre sammenføyning: nøyaktig forskjell på eksempler
- MySQL Lag visningsveiledning med kodeeksempler
- MySQL Slett uttalelse - Slett kommandasyntaks og eksempler
- MySQL Sett inn i tabellen - Sett inn uttalelsessyntaks og eksempler
- MySQL Update Statement Tutorial - Update Query Syntax & Eksempler
- Forskjellen mellom SQL Vs MySQL Vs SQL Server (med eksempler)
- Hva er MySQL og hvorfor brukes det?
- 20+ MongoDB-opplæring for nybegynnere: Gratis MongoDB-kurs