mysql join tutorial inner
Découvrez différentes instructions MySQL JOIN telles que Inner, Outer, Cross, Left, Right et Self avec des exemples de syntaxe et de programmation:
Dans ce tutoriel, nous allons en apprendre davantage sur MySQL JOIN et également comprendre les différents types de jointures pris en charge dans MySQL. JOIN dans sa forme la plus simple peut être considéré comme un moyen de récupérer / mettre à jour ou supprimer des données de plusieurs tables par rapport à une seule requête.
Donc, en substance, JOIN combine 2 tables ou plus pour récupérer des données par rapport à une condition donnée.
MySQL prend également en charge d'autres façons différentes d'interroger les données de plusieurs tables en utilisant - des sous-requêtes et en combinant plusieurs requêtes à l'aide d'UNION, etc.
Ce que vous apprendrez:
Tables normalisées
Dans les bases de données MySQL normalisées, les tables ont des relations avec des colonnes communes au moyen de contraintes clés telles que les clés étrangères.
Essayons de comprendre cela à l'aide d'un exemple - Supposons qu'il y ait 2 tables, EMPLOYEE et EMPLOYEE_DEPARTMENT. Maintenant, dans une base de données dénormalisée - c'est-à-dire une seule table contenant toutes les colonnes, beaucoup d'informations, par exemple sur le département, seraient dupliquées car il peut y avoir beaucoup d'employés qui font partie du même département.
Par conséquent, pour réduire ces duplications et économiser sur le stockage, les bases de données sont conservées dans un état normalisé.
Donc, dans ce cas, nous ferions référence au département par un champ Department_id dans la table EMPLOYEE et toutes les informations pertinentes liées au département - comme les informations sur le département, le chef de département, etc. peuvent être conservées dans la table EMPLOYEE_DEPARTMENT.
Donc, en un mot - EMPLOYEE et EMPLOYEE_DEPARTMENT sont liés l'un à l'autre via le champ Department_id, qui agit comme une clé étrangère pour la table EMPLOYEE et PRIMARY KEY pour la table EMPLOYEE_DEPARTMENT.
L'image ci-dessous est une représentation picturale ayant une relation entre ces deux tableaux au moyen de Contrainte de clé étrangère
MySQL JOIN
MySQL JOIN est utilisé pour récupérer, mettre à jour ou supprimer des données de 2 tables ou plus par rapport à une condition donnée. Par conséquent, JOIN est toujours utilisé en conjonction avec les instructions SELECT, UPDATE ou DELETE
Syntaxe de la commande JOIN:
REJOIGNEZ avec SELECT
SELECT {column_list} FROM tableName1 {joinType} tableName2 ON {joinCondition}
REJOINDRE avec UPDATE
DELETE FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
REJOINDRE avec DELETE
UPDATE tableName1 SET targetColumn = targetValue FROM tableName1 {joinType} tableName2 ON {joinCondition} WHERE {condition}
Veuillez noter que JOIN peut être appliqué à plusieurs tables dans une seule requête, mais pour plus de simplicité, essayons d'abord de comprendre l'utilisation des jointures avec 2 tables.
Les différentes parties de la syntaxe comprennent:
- {column_list} - Cela représente les noms des colonnes que nous voulons récupérer à la suite de notre requête.
- {JoinType} - Cela indique le type de jointure que nous appliquons. Il existe différents types de JOINS suivants qui peuvent récupérer des données:
- JOINTURE INTERNE
- JOINTURE EXTÉRIEURE
- JOINTURE EXTERNE GAUCHE
- JOINTURE EXTÉRIEURE DROITE
- JOINDRE CROISÉ
Nous en apprendrons davantage sur tous ces différents types de MySQL JOINS dans les prochaines sections du didacticiel.
- {JoinCondition} - Ce sont les conditions de colonne qui seraient utilisées pour le JOIN pour interroger et récupérer des données.
Dans la section suivante, nous discuterons des différents types de jointures disponibles dans MySQL.
Types de jointure MySQL
Préparation des données d'échantillon
Pour utiliser JOINS, nous utiliserons 2 tables Employee et Employee_Department avec les détails ci-dessous. Vous pouvez utiliser / consulter un site utile ici afin de générer des données factices pour le schéma.
Liste des requêtes pour la création et l'insertion de table:
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'),
JOINTURE INTERNE
INNER JOIN est la forme la plus courante de JOIN et est très largement utilisée. Presque tous devraient avoir utilisé cela à un moment ou à un autre. Voyons la syntaxe, puis quelques exemples de requêtes.
Syntaxe:
SELECT {column_list} FROM tableName1 INNER JOIN tableName2 ON {joinCondition}
Requête pour récupérer les noms de service pour tous les employés des tables déclarées ci-dessus (Employee et 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
Voici le résultat de la requête ci-dessus:
Nom de l'employé | Nom du département |
---|---|
des choses | Sécurité |
Qui | Informatique |
Et | HEURE |
arriver à | HEURE |
je | La finance |
Besoins | Comptabilité |
Fgit | Entretien ménager |
collations | Sécurité |
s'il te plaît | Sécurité |
Cette | Soutien |
Et | Personnel contractuel |
ardeur | Personnel contractuel |
résilience | Personnel contractuel |
corps | Personnel contractuel |
Équitable | Personnel contractuel |
des bureaux | Ventes |
des choses | Ventes |
ennuis | Gestion |
Des douleurs | Gestion |
En dehors | Gestion |
Noter: Ici, nous avons utilisé des alias de nom de colonne. Exemple: Employee.name as Employee_name - juste pour rendre les résultats plus lisibles et plus complets.
Modifions cette requête pour récupérer uniquement les noms commençant par la lettre «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%'
Voici la sortie:
Nom de l'employé | Nom du département | |||||
---|---|---|---|---|---|---|
collations | 7 | 6961, promenade Weissnat Donnellyfort, MT 53947 | 6 | NUL | NUL | NUL |
ennuis | Gestion | |||||
résilience | Personnel contractuel |
Et maintenant, comprenons le JOINT INTÉRIEUR à l'aide du diagramme de Venn comme ci-dessous. Les lignes résultantes renvoyées se composent des données qui se chevauchent entre les deux tables en fonction de la condition JOIN.
JOINTURE EXTÉRIEURE
OUTER JOIN est utilisé pour récupérer des données à partir de 2 tables ou plus, à l'exception de l'inclusion des lignes sans correspondance (ou des lignes ayant des données nulles pour les colonnes interrogées).
Pour mieux comprendre Outer Join, ajoutez une nouvelle table office_locations ayant des champs - id et adresse et ajoutez une nouvelle colonne nommée `office_id` à la table Employee créée à l'origine.
Voici les requêtes pour le même:
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;
Veuillez vous référer au diagramme de Venn ci-dessous pour comprendre les JOINTES EXTÉRIEURES en images:
Il existe 2 types de jointures externes
a) JOINTURE EXTÉRIEURE GAUCHE
Comme son nom l'indique, ce type de jointure extrait toutes les lignes (y compris les valeurs NULL) de la table qui se trouve sur le côté gauche de la requête JOIN. En termes simples, tous les résultats / lignes qui ne correspondent pas à la condition JOIN seront renvoyés avec le résultat ayant des valeurs NULL pour la table de droite.
Par exemple, nous avons besoin de données de localisation pour tous les employés - c'est-à-dire quelle est l'adresse de bureau de tous les employés.
SELECT * from Employee LEFT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Sortie de la requête ci-dessus:
Nom | Identifiant | Adresse | Department_id | Office_id | Adresse de bureau | Identifiant |
---|---|---|---|---|---|---|
je | 1 | 640 Damon Junction East Mathew, NY 68818 | 3 | NUL | NUL | NUL |
ennuis | deux | 6658 Hollis Club Ernamouth, TX 19743 | dix | 1 | Bangalore | 1 |
des bureaux | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | deux | Bombay | deux |
des choses | 4 | 91067 Fort Geovany) Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
Et | 5 | 7647 Reva Shores, bureau 970 New Audrafort, OH 17846-5397 | deux | NUL | NUL | NUL |
Et | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | deux | Bombay | deux |
ardeur | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, Californie 45675 | 8 | 1 | Bangalore | 1 |
arriver à | 9 | 9086 Place Mariam, bureau 698 South Dulce, MT 82861-3079 | deux | deux | Bombay | deux |
des choses | dix | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
Qui | Onze | 42928 Sentier Ernesto Jules Est, WV 87169-2851 | 1 | NUL | NUL | NUL |
Cette | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | deux | Bombay | deux |
Des douleurs | 13 | 22811 Liliana Trail Apt. 890 Sud Ernesto, MT 04134 | dix | NUL | NUL | NUL |
En dehors | 14 | 981 Passage supérieur Laron, bureau 361 West Olahaven, FL 46982-7801 | dix | 1 | Bangalore | 1 |
résilience | quinze | 411 Moulin Louisa South Maximefort, MA 04903 | 8 | deux | Bombay | deux |
Besoins | 16 | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4 | 1 | Bangalore | 1 |
FUITE | 17 | 3647 Rosalinda Corner Maureenstad, RI 96605 | 5 | NUL | NUL | NUL |
corps | 18 | 03559 Nicholas Circle App. 364 West Zettaberg, ID 58592-3447 | 8 | deux | Bombay | deux |
ou | 19 | 56111 Alysson Gateway Apt. 212 Leschbury, VT 90605-2306 | 8 | NUL | NUL | NUL |
s'il te plaît | vingt | 263, avenue O'Keefe Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
b) JOINTURE EXTÉRIEURE DROITE
Similaire à LEFT JOIN, dans ce type de jointure, tous les enregistrements qui ne correspondent pas à la table de droite sont renvoyés avec des valeurs NULL sur les colonnes de la table de gauche.
meilleures entreprises de big data pour lesquelles travailler
Par exemple, avec nos exemples de tables, si nous exécutons RIGHT JOIN sur la même requête que celle que nous avons utilisée pour LEFT JOIN, nous obtiendrons des valeurs NULL pour les villes 'Seattle' et 'Santa Clara' car il n'y a pas de lignes dans la table Employee qui ont un emplacement défini à ces valeurs.
SELECT * from Employee RIGHT OUTER JOIN office_locations ON Employee.office_id = office_locations.id
Sortie de la requête ci-dessus:
Nom | Identifiant | Adresse | Department_id | Office_id | Adresse de bureau | Identifiant |
---|---|---|---|---|---|---|
s'il te plaît | vingt | 263, avenue O'Keefe Apt. 884 West Missouri, IL 50303 | 6 | 1 | Bangalore | 1 |
ennuis | deux | 6658 Hollis Club Ernamouth, TX 19743 | dix | 1 | Bangalore | 1 |
des choses | 4 | 91067 Fort de Geovany Hanefort, WA 92863 | 6 | 1 | Bangalore | 1 |
ardeur | 8 | 117 Nellie Summit Suite 982 South Heavenfurt, Californie 45675 | 8 | 1 | Bangalore | 1 |
des choses | dix | 783 Goodwin Burgs Apt. 429 Willmsfort, UT 42820-1019 | 9 | 1 | Bangalore | 1 |
En dehors | 14 | 981 Passage supérieur Laron, bureau 361 West Olahaven, FL 46982-7801 | dix | 1 | Bangalore | 1 |
Besoins | 16 | 2853 Jonathon Turnpike Quitzonville, KY 54776 | 4 | 1 | Bangalore | 1 |
des bureaux | 3 | 59965 Mason Neck Apt. 985 Kareemborough, NV 85535 | 9 | deux | Bombay | deux |
Et | 6 | 9419 Carmela Burg Apt. 687 Aimeebury, SD 32389-4489 | 8 | deux | Bombay | deux |
arriver à | 9 | 9086 Place Mariam, bureau 698 South Dulce, MT 82861-3079 | deux | deux | Bombay | deux |
Cette | 12 | 161 Kassulke Stravenue Apt. 937 Williamsonton, MS 62622 | 7 | deux | Bombay | deux |
résilience | quinze | 411 Moulin Louisa South Maximefort, MA 04903 | 8 | deux | Bombay | deux |
corps | 18 | 03559 Nicholas Circle App. 364 West Zettaberg, ID 58592-3447 | 8 | deux | Bombay | deux |
NUL | NUL | NUL | NUL | NUL | Seattle | 3 |
NUL | NUL | NUL | NUL | NUL | Santa Clara | 4 |
Notes / Conseils:
- Dans d'autres bases de données relationnelles comme Microsoft SQL, vous pouvez trouver un autre type de jointure externe qui s'appelle FULL OUTER JOIN. Ce n’est rien d’autre qu’une combinaison de jointures INNER et EXTERNE - c’est-à-dire qu’il renverra les valeurs NULL des tables GAUCHE et DROITE.
- Pour une discussion détaillée ainsi que des explications et des exemples sur les différences entre les JOINTES INTÉRIEURES et EXTÉRIEURES, veuillez consulter notre tutoriel ici.
- Dans les requêtes OUTER JOIN - la RIGHT OUTER JOIN et LEFT OUTER JOIN pourraient être simplement spécifiées comme RIGHT JOIN et LEFT JOIN respectivement pour plus de lisibilité.
JOINDRE CROISÉ
CROSS JOIN est également appelé produit cartésien. Il renvoie un résultat par rapport aux conditions de jointure correspondantes avec un total de m x n lignes où m et n sont un nombre de lignes correspondantes dans table1 et table2 par rapport à la condition JOIN.
Voyons un exemple de requête pour un CROSS JOIN pour obtenir les résultats de 2 tables: Employee et office_locations
SELECT * from Employee CROSS JOIN office_locations
La sortie retournée contiendra un total de 80 lignes, ce qui n'est rien d'autre que le produit des lignes des deux tables - Employee (20) x office_locations (4) => 80
Veuillez noter que, en faisant CROSS JOIN, vous n'avez pas besoin de spécifier de condition JOIN car vous obtiendriez de toute façon un résultat m x n.
Notes / Conseils:
Vous ne trouverez pas beaucoup de fois en utilisant CROSS JOIN, car il n'y a pas beaucoup de cas d'utilisation associés. Cette jointure est généralement exécutée lorsque quelqu'un cherche à obtenir toutes les combinaisons possibles avec les données de 2 tables.
Par exemple: Supposons que vous soyez un exportateur de vêtements et que vous ayez 2 tables - une avec des données de couleur et une autre avec des données de taille. Ici, pour assurer l'inventaire, vous pouvez envisager de faire un CROSS JOIN des deux tables pour vous assurer que tous les vêtements sont achetés pour toutes les combinaisons de tailles et de couleurs.
S'INSCRIRE
SELF JOIN est comme toute autre jointure INTÉRIEURE ou EXTÉRIEURE, à la seule exception que les deux tables, c'est-à-dire la table de jointure et la table jointe sont identiques.
Nous utilisons généralement des jointures SELF lorsque nous voulons connaître la relation entre les lignes d'une même table. Par exemple, si une table a à la fois l'identifiant de l'employé et l'identifiant de l'employé superviseur, nous pouvons joindre la table contre elle-même si nous voulons trouver le nom du responsable par rapport au nom de l'employé.
Veuillez noter que pour SELF JOIN, vous devez utiliser des alias de table afin que les conditions de jointure puissent être spécifiées en se référant à la table correcte.
Voyons un exemple ici:
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
Ici, nous avons joint la table Employé à elle-même pour découvrir les noms d'employés qui ont le même bureau et le même service
Employé1 | Employé2 |
---|---|
Et | résilience |
ennuis | ennuis |
ennuis | En dehors |
Oficiis | des bureaux |
des choses | des choses |
des choses | s'il te plaît |
Et | Et |
Et | corps |
ardeur | ardeur |
arriver à | arriver à |
des choses | des choses |
Cette | Cette |
En dehors | ennuis |
En dehors | En dehors |
résilience | Et |
résilience | résilience |
résilience | corps |
Besoins | Besoins |
corps | Et |
corps | résilience |
corps | corps |
s'il te plaît | des choses |
s'il te plaît | s'il te plaît |
Comme nous l'avions discuté, SELF JOIN a juste des tables de jointure et de jointure comme même, nous pouvons utiliser SELF JOIN avec des jointures INNER ou OUTER.
MySQL JOIN avec UPDATE et DELETE
Jusqu'à présent, nous avons discuté des jointures avec des instructions SELECT. Cependant, les jointures peuvent également être utilisées avec les instructions MySQL DELETE et UPDATE.
La syntaxe reste la même ici. Voyons quelques exemples pour mieux comprendre le concept.
MISE À JOUR avec INNER JOIN
Supposons que nous souhaitons remplacer l'adresse de la table Employee par le nom de l'emplacement du bureau présent dans la table office_locations. Ici, nous pouvons utiliser INNER JOIN pour récupérer le nom de la ville depuis office_locations et mettre à jour la même requête.
Exemple de requête:
UPDATE Employee emp inner join office_locations off_loc on emp.office_id = off_loc.id set emp.address = off_loc.address;
Similaire à cela, UPDATE peut également être utilisé avec d'autres types de jointures, en fonction des besoins par rapport à des cas d'utilisation spécifiques.
SUPPRIMER avec INNER JOIN
Nous utiliserons les tables, Employee et Employee_Departments comme exemple. Supposons que nous souhaitons supprimer tous les enregistrements d'employés appartenant au service commercial et que nous souhaitions également supprimer l'entrée pour le service commercial.
Puisque nous avons utilisé Department_id comme contrainte FOREIGN KEY, nous devons donc d'abord DROP cette contrainte avant d'utiliser DELETE avec JOIN pour plusieurs tables.
Voyons d'abord le nom de la contrainte créée pour Department_id dans la table Employee. Exécutez simplement la commande pour obtenir la commande CREATE TABLE.
show create table Employee
Vous obtiendrez la sortie sous la forme:
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
Vous pouvez maintenant faire référence au nom de la contrainte FOREIGN_KEY à partir de la commande ci-dessus qui est «Employee_ibfk_1» et nous pouvons utiliser ce nom pour supprimer cette contrainte de la table Employee en exécutant la commande ci-dessous:
alter table Employee drop constraint Employee_ibfk_1
Exécutons maintenant la commande DELETE avec 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
La sortie de cette commande serait non. de lignes supprimées (et cela devrait avec succès SUPPRIMER les lignes des deux tables référencées dans la requête JOIN ci-dessus)
Questions fréquemment posées
Q # 1) Combien de types de jointures existe-t-il dans MySQL?
télécharger un téléchargeur de musique mp3 pour android
Répondre: MySQL prend principalement en charge 3 types de jointures. Ceux-ci sont:
- Jointure interne
- Jointure externe - Jointure externe gauche et jointure externe droite
- Jointure croisée
Q # 2) Joindre peut-il être utilisé uniquement pour 2 tables?
Répondre: Les jointures peuvent être appliquées à 2 ou plus de 2 tables. La plupart du temps, les jointures sont utilisées pour 2 tables.
Ci-dessous, un exemple de jointure intérieure utilisant 3 tables:
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
Sortie de la requête ci-dessus:
nom_emp | nom_dépt | emplacement du bureau |
---|---|---|
En dehors | Gestion | Bangalore |
ennuis | Gestion | Bangalore |
des choses | Sécurité | Bangalore |
Et | Personnel contractuel | Bombay |
ardeur | Personnel contractuel | Bangalore |
arriver à | HEURE | Bombay |
Cette | Soutien | Bombay |
résilience | Personnel contractuel | Bombay |
Besoins | Comptabilité | Bangalore |
corps | Personnel contractuel | Bombay |
s'il te plaît | Sécurité | Bangalore |
Q # 3) Comment utiliser les alias de table avec les jointures?
Répondre: Les alias sont un moyen d'avoir un nom temporaire pour une table à référencer dans une requête. Étant donné que les requêtes JOIN sont parfois complexes et pour rendre les requêtes lisibles et éviter de faire référence aux noms de table pour chaque référence de colonne, nous pouvons avoir des noms raccourcis avec des alias.
Écrivons une requête INNER JOIN pour récupérer les données de tous les noms d'employés et de services à partir des tables Employee et Employee_Departments respectivement.
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
Dans la requête ci-dessus, vous pouvez voir que nous avons aliasé la table Employee en tant qu'emp et la table Employee_Department en tant que Department et avons utilisé les alias pour référencer les noms de colonne et les conditions de jointure.
Q # 4) Qu'est-ce que CROSS JOIN?
Répondre: CROSS JOIN est un type de jointure dans lequel l'utilisateur souhaite récupérer le produit cartésien des tables jointes.
Le résultat de CROSS JOIN est m x n où m est le nombre de lignes correspondantes dans la première table et n est le nombre de lignes correspondantes dans la deuxième table.
Q # 5) Comment obtenir FULL OUTER JOIN dans MySQL
Répondre: MySQL ne fournit pas FULL OUTER JOIN en tant que type de jointure distinct, contrairement à d'autres bases de données comme Microsoft SQL. Cependant, pour obtenir des résultats comme l'aurait récupéré FULL OUTER JOIN, nous pouvons combiner les résultats de LEFT OUTER JOIN et RIGHT OUTER JOIN.
Par exemple, nous pouvons récupérer les détails de l'employé et du service et appliquer l'union aux jointures externes gauche et droite.
Lecture recommandée = >> Opérateur MySQL Union
Conclusion
Dans ce didacticiel, nous avons découvert les différents types de jointures disponibles dans MySQL.
Nous avons discuté des jointures INNER, OUTER, CROSS et SELF et avons également vu comment les requêtes JOIN pouvaient être utilisées avec les instructions UPDATE et DELETE pour avoir des requêtes efficaces et optimisées pour les données jointes entre 2 ou plus de 2 tables.
JOINS est l'une des requêtes les plus basiques et toute personne utilisant ou apprenant des bases de données SQL doit avoir une compréhension approfondie des jointures SQL.
lecture recommandée
- Jointure interne vs jointure externe: différence exacte avec les exemples
- Tutoriel MySQL Create View avec des exemples de code
- Instruction de suppression MySQL - Syntaxe et exemples de commande de suppression
- MySQL Insert Into Table - Syntaxe et exemples d'instructions d'insertion
- Didacticiel de déclaration de mise à jour MySQL - Syntaxe de requête de mise à jour et exemples
- Différence entre SQL et MySQL et SQL Server (avec exemples)
- Qu'est-ce que MySQL et pourquoi est-il utilisé?
- 20+ Tutoriel MongoDB pour les débutants: Cours MongoDB gratuit