mysql join tutorial inner
Scopri le diverse istruzioni JOIN di MySQL come Inner, Outer, Cross, Left, Right e Self con esempi di sintassi ed esempi di programmazione:
In questo tutorial impareremo a conoscere MySQL JOIN e comprenderemo anche i diversi tipi di join supportati in MySQL. JOIN nella sua forma più semplice può essere pensato come un mezzo per recuperare / aggiornare o eliminare dati da più tabelle su una singola query.
Quindi, in sostanza, JOIN combina 2 o più tabelle per recuperare i dati rispetto a una determinata condizione.
MySQL supporta anche altri modi diversi per eseguire query sui dati da più tabelle utilizzando - sottoquery e combinando più query utilizzando UNION, ecc.
Cosa imparerai:
Tabelle normalizzate
Nei database MySQL normalizzati, le tabelle hanno relazioni con colonne comuni tramite vincoli chiave come chiavi esterne.
Proviamo a capirlo con l'aiuto di un esempio - Supponiamo che ci siano 2 tabelle, EMPLOYEE e EMPLOYEE_DEPARTMENT. Ora in un database denormalizzato, ovvero una singola tabella con tutte le colonne, molte informazioni, ad esempio, sul dipartimento verrebbero duplicate poiché possono esserci molti dipendenti che fanno parte dello stesso dipartimento.
Quindi, per ridurre tali duplicazioni e risparmiare sull'archiviazione, i database vengono mantenuti in uno stato normalizzato.
Quindi, in questo caso, faremo riferimento al Dipartimento tramite un campo Department_id nella tabella EMPLOYEE e tutte le informazioni rilevanti relative a Department - come Department Info, Department head, ecc. Possono essere conservate come parte della tabella EMPLOYEE_DEPARTMENT.
Quindi, in poche parole, EMPLOYEE e EMPLOYEE_DEPARTMENT sono collegati tra loro tramite il campo Department_id, che funge da CHIAVE ESTERA per la tabella EMPLOYEE e CHIAVE PRIMARIA per la tabella EMPLOYEE_DEPARTMENT.
L'immagine sotto è una rappresentazione pittorica avente una relazione tra queste due tabelle tramite Vincolo di chiave esterna
MySQL JOIN
MySQL JOIN viene utilizzato per recuperare, aggiornare o eliminare dati da 2 o più tabelle rispetto a una determinata condizione. Pertanto, JOIN viene sempre utilizzato insieme alle istruzioni SELECT, UPDATE o DELETE
Sintassi del comando JOIN:
UNISCITI con SELEZIONA
SELECT {column_list} FROM tableName1 {joinType} tableName2 ON {joinCondition}
ISCRIVITI con UPDATE
DELETE FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
UNISCITI con DELETE
UPDATE tableName1 SET targetColumn = targetValue FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
Tieni presente che JOIN potrebbe essere applicato a più tabelle in una singola query, ma per semplicità proviamo prima a capire l'utilizzo di Join con 2 tabelle.
Le diverse parti della sintassi includono:
- {column_list} - Questo rappresenta i nomi delle colonne che vogliamo recuperare come risultato della nostra query.
- {JoinType} - Ciò indica il tipo di join che stiamo applicando. Esistono diversi tipi di JOINS che possono recuperare i dati:
- INNER JOIN
- OUTER JOIN
- UNISCI ESTERNO SINISTRO
- GIUSTO ESTERNO UNISCI
- CROSS JOIN
Impareremo tutti questi diversi tipi di JOINS MySQL nelle prossime sezioni del tutorial.
- {JoinCondition} - Queste sono le condizioni della colonna che verrebbero utilizzate per JOIN per interrogare e recuperare i dati.
Nella sezione successiva, discuteremo dei diversi tipi di join disponibili in MySQL.
Tipi di MySQL JOIN
Preparazione dei dati del campione
Per utilizzare JOINS, utilizzeremo 2 tabelle Employee e Employee_Department con i dettagli di seguito. Puoi usare / fare riferimento a un sito utile Qui per generare dati fittizi per lo schema.
Elenco delle query per la creazione e l'inserimento di tabelle:
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 è la forma più comune di JOIN ed è ampiamente utilizzata. Quasi tutti voi avreste dovuto usarlo prima o poi. Vediamo la sintassi e poi alcune query di esempio.
Sintassi:
SELECT {column_list} FROM tableName1 INNER JOIN tableName2 ON {joinCondition}
Query per recuperare i nomi dei dipartimenti per tutti i dipendenti dalle tabelle sopra dichiarate (Employee e 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
Ecco l'output della query precedente:
Nome dipendente | Nome Dipartimento |
---|---|
cose | Sicurezza |
Oms | Tecnologie dell'informazione |
E | HR |
accadere | HR |
io | Finanza |
esigenze | Contabilità |
Fgit | Faccende domestiche |
spuntini | Sicurezza |
Per favore | Sicurezza |
Quello | Supporto |
E | Personale a contratto |
impazienza | Personale a contratto |
resilienza | Personale a contratto |
corpo | Personale a contratto |
Eque | Personale a contratto |
uffici | I saldi |
cose | I saldi |
fastidi | Gestione |
Dolori | Gestione |
Su | Gestione |
Nota: Qui abbiamo usato gli alias dei nomi delle colonne. Esempio: Employee.name come Employee_name - solo per rendere i risultati più leggibili e completi.
Modifichiamo questa query per recuperare solo i nomi che iniziano con la lettera '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%'
Di seguito è riportato l'output:
Nome dipendente | Nome Dipartimento | |||||
---|---|---|---|---|---|---|
spuntini | 7 | 6961 Weissnat Drive Donnellyfort, MT 53947 | 6 | NULLO | NULLO | NULLO |
fastidi | Gestione | |||||
resilienza | Personale a contratto |
E ora capiamo INNER JOIN con l'aiuto del diagramma di Venn come di seguito. Le righe risultanti restituite sono costituite dai dati sovrapposti tra le due tabelle in base alla condizione JOIN.
OUTER JOIN
OUTER JOIN viene utilizzato per recuperare i dati da 2 o più tabelle con l'eccezione di includere anche righe senza corrispondenza (o righe con dati nulli per le colonne interrogate).
Per capire meglio Outer Join, aggiungi una nuova tabella office_locations con campi - id e address e aggiungi una nuova colonna denominata `office_id` alla tabella Employee creata originariamente.
Ecco le domande per lo stesso:
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;
Fare riferimento al diagramma di Venn di seguito per comprendere graficamente OUTER JOINS:
Esistono 2 tipi di OUTER JOIN
a) UNISCI ESTERNO SINISTRO
Come suggerisce il nome, questo tipo di Join recupera tutte le righe (compresi i valori NULL) dalla tabella che si trova sul lato sinistro della query JOIN. In parole semplici, tutti i risultati / le righe che non corrispondono alla condizione JOIN verranno restituiti con il risultato con valori NULL per la tabella di destra.
Per esempio, abbiamo bisogno dei dati sulla posizione di tutti i dipendenti, ovvero scoprire qual è l'indirizzo dell'ufficio di tutti i dipendenti.
SELECT * from Employee LEFT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Risultato della query precedente:
Nome | Id | Indirizzo | Department_id | Office_id | Indirizzo dell'ufficio | Id |
---|---|---|---|---|---|---|
io | 1 | 640 Damon Junction East Mathew, NY 68818 | 3 | NULLO | NULLO | NULLO |
fastidi | Due | 6658 Hollis Club Ernamouth, TX 19743 | 10 | 1 | Bangalore | 1 |
uffici | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | Due | Mumbai | Due |
cose | 4 | 91067 Geovany Fort) Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
E | 5 | 7647 Reva Shores Suite 970 Nuovo Audrafort, OH 17846-5397 | Due | NULLO | NULLO | NULLO |
E | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | Due | Mumbai | Due |
impazienza | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, CA 45675 | 8 | 1 | Bangalore | 1 |
accadere | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | Due | Due | Mumbai | Due |
cose | 10 | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
Oms | undici | 42928 Ernesto Trail East Jules, WV 87169-2851 | 1 | NULLO | NULLO | NULLO |
Quello | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | Due | Mumbai | Due |
Dolori | 13 | 22811 Liliana Trail Apt. 890 South Ernesto, MT 04134 | 10 | NULLO | NULLO | NULLO |
Su | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | 1 | Bangalore | 1 |
resilienza | quindici | 411 Louisa Mill South Maximefort, MA 04903 | 8 | Due | Mumbai | Due |
esigenze | 16 | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4 | 1 | Bangalore | 1 |
FLED | 17 | 3647 Rosalinda Corner Maureenstad, RI 96605 | 5 | NULLO | NULLO | NULLO |
corpo | 18 | 03559 Nicholas Circle Apt. 364 West Zettaberg, ID 58592-3447 | 8 | Due | Mumbai | Due |
o | 19 | 56111 Alysson Gateway Apt. 212 Leschbury, VT 90605-2306 | 8 | NULLO | NULLO | NULLO |
Per favore | venti | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
b) GIUSTO ESTERNO JOIN
Simile a LEFT JOIN, in questo tipo di Join tutti i record che non corrispondono dalla tabella di destra vengono restituiti con valori NULL nelle colonne della tabella di sinistra.
siti di download di musica mp3 gratuiti per telefoni Android
Per esempio, con le nostre tabelle di esempio, se eseguiamo RIGHT JOIN sulla stessa query che abbiamo usato per LEFT JOIN, otterremo valori NULL per le città 'Seattle' e 'Santa Clara' poiché non ci sono righe nella tabella Employee con posizione impostata a questi valori.
SELECT * from Employee RIGHT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Risultato della query precedente:
Nome | Id | Indirizzo | Department_id | Office_id | Indirizzo dell'ufficio | Id |
---|---|---|---|---|---|---|
Per favore | venti | 263 O'Keefe Avenue Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
fastidi | Due | 6658 Hollis Club Ernamouth, TX 19743 | 10 | 1 | Bangalore | 1 |
cose | 4 | 91067 Geovany Fort Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
impazienza | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, CA 45675 | 8 | 1 | Bangalore | 1 |
cose | 10 | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
Su | 14 | 981 Laron Overpass Suite 361 West Olahaven, FL 46982-7801 | 10 | 1 | Bangalore | 1 |
esigenze | 16 | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4 | 1 | Bangalore | 1 |
uffici | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | Due | Mumbai | Due |
E | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | Due | Mumbai | Due |
accadere | 9 | 9086 Mariam Square Suite 698 South Dulce, MT 82861-3079 | Due | Due | Mumbai | Due |
Quello | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | Due | Mumbai | Due |
resilienza | quindici | 411 Louisa Mill South Maximefort, MA 04903 | 8 | Due | Mumbai | Due |
corpo | 18 | 03559 Nicholas Circle Apt. 364 West Zettaberg, ID 58592-3447 | 8 | Due | Mumbai | Due |
NULLO | NULLO | NULLO | NULLO | NULLO | Seattle | 3 |
NULLO | NULLO | NULLO | NULLO | NULLO | Santa Clara | 4 |
Note / Suggerimenti:
- In altri database relazionali come Microsoft SQL, potresti trovare un altro tipo di OUTER JOIN chiamato FULL OUTER JOIN. Non è altro che una combinazione di entrambi i join INNER e OUTER, ovvero restituirà valori NULL da entrambe le tabelle LEFT e RIGHT.
- Per una discussione dettagliata insieme a spiegazioni ed esempi sulle differenze tra INNER e OUTER JOINS, fare riferimento al nostro tutorial Qui.
- Nelle query OUTER JOIN - RIGHT OUTER JOIN e LEFT OUTER JOIN potrebbero essere specificati solo come RIGHT JOIN e LEFT JOIN rispettivamente per una maggiore leggibilità.
CROSS JOIN
CROSS JOIN è anche chiamato prodotto cartesiano. Restituisce un risultato rispetto alle condizioni di Join corrispondenti con un totale di m x n righe dove m e n sono un numero di righe corrispondenti in table1 e table2 rispetto alla condizione JOIN.
Vediamo una query di esempio per un CROSS JOIN per ottenere risultati da 2 tabelle: Employee e office_locations
SELECT * from Employee CROSS JOIN office_locations
L'output restituito conterrà un totale di 80 righe che non è altro che il prodotto di righe in entrambe le tabelle: Employee (20) x office_locations (4) => 80
Si prega di notare che, mentre si esegue CROSS JOIN non è necessario specificare alcuna condizione JOIN poiché si otterrebbe comunque un risultato m x n.
Note / Suggerimenti:
Non troverai molte volte l'utilizzo di CROSS JOIN, poiché non ha molti casi d'uso associati. Questo join viene generalmente eseguito quando qualcuno sta cercando di ottenere tutte le possibili combinazioni con i dati da 2 tabelle.
Per esempio: Supponi di essere un esportatore di capi di abbigliamento e di avere 2 tabelle: una con dati sul colore e un'altra con dati sulla taglia. Qui, per garantire l'inventario, puoi considerare di fare un CROSS JOIN di entrambe le tabelle per assicurarti che tutti gli indumenti vengano acquistati per tutte le combinazioni di taglie e colori.
SELF JOIN
SELF JOIN è proprio come qualsiasi altro INNER o OUTER Join, con le uniche eccezioni che entrambe le tabelle, ovvero la tabella Joining e Joined, sono uguali.
Generalmente usiamo SELF Joins quando vogliamo scoprire la relazione tra le righe della stessa tabella. Per esempio, se una tabella ha sia l'ID dipendente che l'ID dipendente supervisore, possiamo unirci al tavolo contro se stesso se vogliamo scoprire il nome del manager rispetto al nome del dipendente.
Si noti che per SELF JOIN è necessario utilizzare alias di tabella in modo che le condizioni di join possano essere specificate facendo riferimento alla tabella corretta.
Vediamo un esempio qui:
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
Qui, abbiamo unito la tabella Employee a se stessa per scoprire i nomi dei dipendenti che hanno la stessa sede e reparto
Dipendente 1 | Dipendente 2 |
---|---|
E | resilienza |
fastidi | fastidi |
fastidi | Su |
Oficiis | uffici |
cose | cose |
cose | Per favore |
E | E |
E | corpo |
impazienza | impazienza |
accadere | accadere |
cose | cose |
Quello | Quello |
Su | fastidi |
Su | Su |
resilienza | E |
resilienza | resilienza |
resilienza | corpo |
esigenze | esigenze |
corpo | E |
corpo | resilienza |
corpo | corpo |
Per favore | cose |
Per favore | Per favore |
Come abbiamo discusso, SELF JOIN ha solo le tabelle Joining e Joined come stesse, possiamo usare SELF JOIN con INNER o OUTER Joins.
MySQL UNISCI con UPDATE e DELETE
Finora, abbiamo discusso dei join con le istruzioni SELECT. Tuttavia, i join possono essere utilizzati anche con le istruzioni DELETE e UPDATE di MySQL.
La sintassi rimane la stessa qui. Vediamo un paio di esempi per comprendere meglio il concetto.
AGGIORNAMENTO con INNER JOIN
Supponiamo di voler cambiare l'indirizzo nella tabella Employee con il nome dell'ubicazione dell'ufficio che è presente nella tabella office_locations. Qui possiamo usare INNER JOIN per recuperare il nome della città da office_locations e aggiornare la stessa query.
Query di esempio:
UPDATE Employee emp inner join office_locations off_loc on emp.office_id = off_loc.id set emp.address = off_loc.address;
Simile a questo, UPDATE può essere utilizzato anche con altri tipi di join, a seconda dei requisiti rispetto a casi d'uso specifici.
DELETE Con INNER JOIN
Useremo tabelle, Employee e Employee_Departments come esempio. Si supponga di voler eliminare tutti i record dei dipendenti che appartengono al reparto vendite e di voler eliminare anche la voce per il reparto vendite.
Poiché abbiamo utilizzato Department_id come vincolo FOREIGN KEY, dovremmo prima DROP quel vincolo prima di utilizzare DELETE con JOIN per più tabelle.
Per prima cosa scopriamo il nome del vincolo creato per Department_id nella tabella Employee. Basta eseguire il comando per ottenere il comando CREATE TABLE.
show create table Employee
Otterrai l'output come:
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
Ora puoi fare riferimento al nome del vincolo FOREIGN_KEY dal comando precedente che è 'Employee_ibfk_1' e possiamo utilizzare questo nome per eliminare questo vincolo dalla tabella Employee eseguendo il comando seguente:
alter table Employee drop constraint Employee_ibfk_1
Ora eseguiamo il comando DELETE con 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
L'output di questo comando sarebbe no. di righe eliminate (e questo dovrebbe ELIMINARE correttamente le righe da entrambe le tabelle a cui si fa riferimento nella query JOIN sopra)
Domande frequenti
D # 1) Quanti tipi di join ci sono in MySQL?
Risposta: MySQL supporta principalmente 3 tipi di join. Questi sono:
- Inner Join
- Join esterno: join esterno sinistro e join esterno destro
- Cross Join
D # 2) È possibile utilizzare Join solo per 2 tavoli?
quale sito posso guardare gli anime
Risposta: I join possono essere applicati a 2 o più di 2 tabelle. La maggior parte delle volte i join vengono utilizzati per 2 tabelle.
Di seguito è riportato un esempio di un INNER JOIN utilizzando 3 tabelle:
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
Risultato della query precedente:
emp_name | dept_name | posizione dell'ufficio |
---|---|---|
Su | Gestione | Bangalore |
fastidi | Gestione | Bangalore |
cose | Sicurezza | Bangalore |
E | Personale a contratto | Mumbai |
impazienza | Personale a contratto | Bangalore |
accadere | HR | Mumbai |
Quello | Supporto | Mumbai |
resilienza | Personale a contratto | Mumbai |
esigenze | Contabilità | Bangalore |
corpo | Personale a contratto | Mumbai |
Per favore | Sicurezza | Bangalore |
D # 3) Come utilizzare gli alias di tabella con i join?
Risposta: Gli alias sono un modo per avere un nome temporaneo per una tabella a cui fare riferimento all'interno di una query. Poiché le query JOIN a volte sono complesse e per rendere le query leggibili ed evitare di fare riferimento a nomi di tabella per ogni riferimento di colonna, possiamo avere nomi abbreviati con alias.
Scriviamo una query INNER JOIN per recuperare i dati per tutti i nomi dei dipendenti e i nomi dei reparti dalle tabelle Employee e Employee_Departments rispettivamente.
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
Nella query sopra, puoi vedere che abbiamo la tabella Employee con alias come emp e la tabella Employee_Department come Department e abbiamo usato gli alias per fare riferimento ai nomi delle colonne e alle condizioni di join.
Q # 4) Cos'è CROSS JOIN?
Risposta: CROSS JOIN è un tipo di Join in cui l'utente desidera recuperare il prodotto cartesiano delle tabelle che vengono unite.
Il risultato di CROSS JOIN è m x n dove m è il numero di righe corrispondenti nella prima tabella e n è il numero di righe corrispondenti nella seconda tabella.
D # 5) Come ottenere FULL OUTER JOIN in MySQL
Risposta: MySQL non fornisce FULL OUTER JOIN come tipo di join separato a differenza di altri database come Microsoft SQL. Tuttavia, per ottenere risultati come un FULL OUTER JOIN sarebbe stato recuperato, possiamo combinare i risultati di LEFT OUTER JOIN e RIGHT OUTER JOIN.
Ad esempio, possiamo recuperare i dettagli del dipendente e del reparto e applicare l'unione ai join esterni sinistro e destro.
Lettura consigliata = >> Operatore MySQL Union
Conclusione
In questo tutorial, abbiamo imparato a conoscere i diversi tipi di join disponibili in MySQL.
Abbiamo discusso dei join INNER, OUTER, CROSS e SELF e abbiamo anche visto come le query JOIN potrebbero essere utilizzate con le istruzioni UPDATE e DELETE per avere query efficienti e ottimizzate per i dati uniti tra 2 o più di 2 tabelle.
I JOINS sono una delle query utilizzate più di base e chiunque utilizzi o apprenda database basati su SQL dovrebbe avere una conoscenza approfondita di SQL Joins.
Lettura consigliata
- Join interno vs join esterno: differenza esatta con esempi
- Tutorial MySQL Create View con esempi di codice
- Istruzione MySQL Delete - Elimina la sintassi dei comandi ed esempi
- MySQL Insert Into Table - Inserisci sintassi ed esempi di istruzioni
- Tutorial sull'istruzione di aggiornamento di MySQL: sintassi ed esempi delle query di aggiornamento
- Differenza tra SQL Vs MySQL Vs SQL Server (con esempi)
- Che cos'è MySQL e perché viene utilizzato?
- 20+ Tutorial MongoDB per principianti: corso MongoDB gratuito