Dans un système de gestion de bases de données re­la­tion­nelles, il est possible de comparer des en­re­gis­tre­ments dans dif­fé­rentes tables. Ainsi, on peut établir des con­nexions et extraire des valeurs cor­res­pon­dantes de deux tables. Cette tâche est réalisée dans MariaDB par JOIN. Cette commande est utilisée en com­bi­nai­son avec SELECT et peut être divisée en plusieurs ca­té­go­ries. De plus, nous vous pré­sen­tons également en détail INNER JOIN, LEFT JOIN et RIGHT JOIN.

MariaDB JOIN : syntaxe et fonc­tion­ne­ment

Pour que vous puissiez avoir une vue d’ensemble des dif­fé­rentes ins­truc­tions JOIN dans MariaDB, nous vous montrons d’abord la syntaxe de base de l’ins­truc­tion. Celle-ci se présente comme suit pour INNER JOIN :

SELECT colonne(s)
FROM table_1
INNER JOIN table_2
ON table_1.colonne = table_2.colonne;
sql

Avec SELECT, vous choi­sis­sez la colonne (ou les colonnes) à inclure. Au lieu du caractère de rem­pla­ce­ment « table_1 », vous en­re­gis­trez votre première table et au lieu de « table_2 », la deuxième table à relier à la première. Avec INNER JOIN, toutes les lignes de la première table sont comparées à toutes les lignes de la deuxième table. Les résultats qui con­cor­dent (c’est-à-dire qui sont présents dans les deux tables) sont alors combinés et affichés dans une table finale. En revanche, les entrées qui ne cor­res­pon­dent pas ne sont pas prises en compte.

Exemple de INNER JOIN dans MariaDB

Pour illustrer le fonc­tion­ne­ment de INNER JOIN dans MariaDB, nous vous pré­sen­tons un exemple simple. Pour cela, nous partons d’une base de données dans laquelle se trouvent deux tables. La première table s’appelle « Clients » et la seconde « Commandes ». Nous créons la liste « Clients » avec MariaDB CREATE TABLE. Elle contient les colonnes « Client », « Nom », « Prénom », « Ville » et « Date ». Le code se présente comme suit :

CREATE TABLE Clients (
	Client INT PRIMARY KEY,
	Nom VARCHAR(50),
	Prénom VARCHAR(50),
	Ville VARCHAR(50),
	Date DATE
);
sql

Nous allons main­te­nant remplir cette table avec quelques valeurs. Pour cela, nous utilisons INSERT INTO :

INSERT INTO Clients VALUES
(1, 'Pasquier', 'Marina', 'Paris', '2022-07-19'),
(2, 'Carmon', 'Alex', 'Lille', '2023-03-03'),
(3, 'Mailler', 'Paul', 'Lille', '2023-07-09'),
(4, 'Rodrigo', 'Sarah', 'Marseille', '2023-12-10'),
(5, 'Barton', 'Lisa', 'Paris', '2024-01-17') ;
sql

Nous créons ensuite la table « Commandes ». Celle-ci contient les colonnes « Numéro », « Article », « Nom » et « Date ». Le code ressemble à ceci :

CREATE TABLE Commandes (
	Numéro INT AUTO_INCREMENT PRIMARY KEY,
	Article INT,
	Nom VARCHAR(50),
	Date DATE
);
sql

Nous rem­plis­sons également cette table avec des exemples de valeurs :

INSERT INTO Commandes VALUES
(101, 247, 'Müller', '2024-02-20'),
(102, 332, 'Mailler', '2024-03-03'),
(103, 247, 'Dujardin', '2024-03-09'),
(104, 191, 'Carmon', '2024-03-17'),
(105, 499, 'Brandt', '2024-03-17');
sql

Nous utilisons main­te­nant INNER JOIN pour MariaDB afin de filtrer les clients qui ap­pa­rais­sent dans la liste des clients et ont passé une commande, listée dans la table « Commandes ». Le code cor­res­pon­dant ressemble à ceci :

SELECT Clients.Client, Clients.Nom, Commandes.Numéro, Commandes.Article;
FROM Clients
INNER JOIN Commandes
ON Clients.Nom = Commandes.Nom;
sql

Nous nous con­cen­trons ici sur le nom de famille dans la liste des clients et sur le nom du client dans les commandes. Si ces valeurs cor­res­pon­dent, elles sont reprises. Comme les clients Mailler et Carmon ap­pa­rais­sent dans les deux tables, la sortie cor­res­pon­dante se présente ainsi :

Client Nom Numéro Article
3 Mailler 102 332
2 Carmon 104 191

LEFT JOIN

LEFT JOIN dans MariaDB fonc­tionne selon un principe similaire et utilise également une syntaxe presque identique. Cependant, con­trai­re­ment à INNER JOIN, dans ce cas, tous les en­re­gis­tre­ments de la première table ou de la table de gauche (dans notre exemple « Clients ») sont affichés et seuls les en­re­gis­tre­ments cor­res­pon­dants de la deuxième table ou de la table de droite (« Commandes ») sont inclus. S’il n’y a pas de cor­res­pon­dance dans la deuxième table, la valeur cor­res­pon­dante est indiquée par NULL. Pour notre exemple ci-dessus, la commande ressemble à ceci :

SELECT Clients.Nom, Commandes.Article;
FROM Clients
LEFT JOIN Commandes
ON Clients.Nom = Commandes.Nom;
sql

Nous obtenons ainsi le résultat suivant :

Nom Article
Pasquier NULL
Carmon 191
Mailler 332
Henry NULL
Barton NULL

RIGHT JOIN

RIGHT JOIN fonc­tionne exac­te­ment à l’inverse dans MariaDB. Cette fois-ci, les données de la deuxième table ou de la table de droite sont reliées aux valeurs cor­res­pon­dantes de la première table ou de la table de gauche. S’il n’y a pas de cor­res­pon­dance, la valeur reste NULL. Voici le code :

SELECT Clients.Nom, Commandes.Article;
FROM Clients
RIGHT JOIN Commandes
ON Clients.Nom = Commandes.Nom;
sql

La sortie est la suivante :

Nom Article
NULL 247
Mailler 332
NULL 247
Carmon 191
NULL 499
Conseil

Dans notre Digital Guide, vous trouverez de nom­breuses ins­truc­tions et ex­pli­ca­tions utiles sur le thème de MariaDB. Vous y trouverez par exemple une com­pa­rai­son entre MariaDB et MySQL et un tutoriel sur l’ins­tal­la­tion de MariaDB.

Aller au menu principal