SQLite - JOINS: Maîtriser l'Art de Combiner les Tables

Salut à toi, futur maître des bases de données ! Aujourd'hui, nous plongeons dans un des aspects les plus passionnants (et parfois intimidants) de SQLite : les JOINS. Ne t'inquiète pas si tu es nouveau dans ce domaine ; d'ici la fin de ce tutoriel, tu combineras les tables comme un pro !

SQLite - JOINS

Introduction aux JOINS

Avant de sauter dans le grand bain, parlons pourquoi nous avons besoin des JOINS. Imagine que tu organises une fête d'anniversaire massive (qui n'aime pas une bonne fête, non ?). Tu as une liste avec les noms des invités et une autre avec leurs gâteaux préférés. Ne serait-il pas génial de combiner ces listes pour être sûr que tout le monde obtient son gâteau préféré ? C'est exactement ce que font les JOINS dans les bases de données - elles nous aident à combiner des informations provenant de différentes tables de manière significative.

Maintenant, explorons les trois principaux types de JOINS dans SQLite :

  1. CROSS JOIN
  2. INNER JOIN
  3. OUTER JOIN

Le CROSS JOIN : Le Mixeur de Fête

Qu'est-ce qu'un CROSS JOIN ?

Un CROSS JOIN est comme inviter tout le monde à se mêler à tout le monde à ta fête. Il combine chaque ligne d'une table avec chaque ligne d'une autre table. C'est l'équivalent en base de données de dire : "Hey, tout le monde, rencontrez tout le monde !"

Syntaxe du CROSS JOIN

SELECT * FROM table1 CROSS JOIN table2;

Exemple de CROSS JOIN

Créons deux tables simples pour notre planification de fête :

CREATE TABLE guests (
guest_id INTEGER PRIMARY KEY,
guest_name TEXT
);

CREATE TABLE cakes (
cake_id INTEGER PRIMARY KEY,
cake_flavor TEXT
);

INSERT INTO guests (guest_name) VALUES ('Alice'), ('Bob'), ('Charlie');
INSERT INTO cakes (cake_flavor) VALUES ('Chocolat'), ('Vanille'), ('Fraise');

Maintenant, utilisons un CROSS JOIN :

SELECT guests.guest_name, cakes.cake_flavor
FROM guests CROSS JOIN cakes;

Cette requête produira :

guest_name cake_flavor
Alice Chocolat
Alice Vanille
Alice Fraise
Bob Chocolat
Bob Vanille
Bob Fraise
Charlie Chocolat
Charlie Vanille
Charlie Fraise

Comme vous pouvez le voir, chaque invité est associé à chaque saveur de gâteau. C'est comme donner à tout le monde un échantillon de tous les gâteaux !

Quand utiliser un CROSS JOIN

Les CROSS JOIN sont rarement utilisés dans des scénarios réels car ils peuvent produire des ensembles de résultats très volumineux. Cependant, ils sont parfaits pour générer des combinaisons ou créer des données de test.

Le INNER JOIN : La Parfaite Correspondance

Qu'est-ce qu'un INNER JOIN ?

Un INNER JOIN est comme associer des danseurs qui savent tous la même danse. Il combine des lignes de deux tables basées sur une colonne relationnelle entre elles.

Syntaxe du INNER JOIN

SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;

Exemple de INNER JOIN

Modifions notre scénario de planification de fête. Maintenant, nous avons des invités et leurs préférences de gâteaux :

CREATE TABLE guests (
guest_id INTEGER PRIMARY KEY,
guest_name TEXT,
preferred_cake_id INTEGER
);

CREATE TABLE cakes (
cake_id INTEGER PRIMARY KEY,
cake_flavor TEXT
);

INSERT INTO guests (guest_name, preferred_cake_id) VALUES
('Alice', 1), ('Bob', 2), ('Charlie', 3), ('David', 1);
INSERT INTO cakes (cake_flavor) VALUES
('Chocolat'), ('Vanille'), ('Fraise');

Maintenant, utilisons un INNER JOIN pour matcher les invités avec leurs gâteaux préférés :

SELECT guests.guest_name, cakes.cake_flavor
FROM guests INNER JOIN cakes ON guests.preferred_cake_id = cakes.cake_id;

Cette requête produira :

guest_name cake_flavor
Alice Chocolat
Bob Vanille
Charlie Fraise
David Chocolat

Parfait ! Chaque invité est associé à sa saveur de gâteau préférée.

Quand utiliser un INNER JOIN

Les INNER JOIN sont le type de JOIN le plus commun. Utilisez-les lorsque vous souhaitez récupérer des données qui ont des valeurs correspondantes dans les deux tables.

Le OUTER JOIN : Ne Laisser Personne derrière

Qu'est-ce qu'un OUTER JOIN ?

Un OUTER JOIN est comme s'assurer que personne ne se sent left out à la fête. Il renvoie toutes les lignes d'une ou des deux tables, même si il n'y a pas de correspondance dans l'autre table.

Il existe trois types de OUTER JOIN :

  1. LEFT OUTER JOIN
  2. RIGHT OUTER JOIN (non supporté dans SQLite)
  3. FULL OUTER JOIN (non directement supporté dans SQLite)

Nous nous concentrerons sur le LEFT OUTER JOIN, car c'est le plus couramment utilisé dans SQLite.

Syntaxe du LEFT OUTER JOIN

SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.column = table2.column;

Exemple de LEFT OUTER JOIN

Ajoutons un invité qui n'a pas de préférence de gâteau :

INSERT INTO guests (guest_name, preferred_cake_id) VALUES ('Eve', NULL);

Maintenant, utilisons un LEFT OUTER JOIN :

SELECT guests.guest_name, cakes.cake_flavor
FROM guests LEFT OUTER JOIN cakes ON guests.preferred_cake_id = cakes.cake_id;

Cette requête produira :

guest_name cake_flavor
Alice Chocolat
Bob Vanille
Charlie Fraise
David Chocolat
Eve NULL

Voyez comment Eve est incluse dans le résultat, même si elle n'a pas de préférence de gâteau ? C'est la magie du LEFT OUTER JOIN !

Quand utiliser un OUTER JOIN

Utilisez les OUTER JOIN lorsque vous souhaitez inclure toutes les lignes d'une table, indépendamment de savoir si elles ont des enregistrements correspondants dans l'autre table.

Conclusion

Et voilà, les amis ! Vous avez刚刚 vos premiers pas dans le merveilleux monde des JOINS de SQLite. Souvenez-vous, la pratique rend parfait, donc n'ayez pas peur d'expérimenter avec ces requêtes.

Voici un tableau de référence rapide des JOINS que nous avons couverts :

Type de JOIN Cas d'Utilisation
CROSS JOIN Combiner chaque ligne avec chaque autre ligne
INNER JOIN Matcher les lignes basées sur une condition
LEFT JOIN Inclure toutes les lignes de la table de gauche, matcher si possible

Continuez à combiner ces tables, et bientôt vous serez la vedette de la fête des bases de données ! Bonne requête !

Credits: Image by storyset