SQLite - JOINS : Maîtriser l'Art de Combiner des 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 novice dans ce domaine ; d'ici la fin de ce tutoriel, tu seras capable de combiner des tables comme un pro !

SQLite - JOINS

Introduction aux JOINS

Avant de nous lancer dans le vif du sujet, 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 reçoive 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élanger avec tout le monde d'autre à 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 ('Chocolate'), ('Vanilla'), ('Strawberry');

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 Chocolate
Alice Vanilla
Alice Strawberry
Bob Chocolate
Bob Vanilla
Bob Strawberry
Charlie Chocolate
Charlie Vanilla
Charlie Strawberry

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 du monde réel 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.

L'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 liée entre elles.

Syntaxe de l'INNER JOIN

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

Exemple d'INNER JOIN

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

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
('Chocolate'), ('Vanilla'), ('Strawberry');

Maintenant, utilisons un INNER JOIN pour associer les invités à 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 Chocolate
Bob Vanilla
Charlie Strawberry
David Chocolate

Parfait ! Chaque invité est associé à son gâteau préféré.

Quand utiliser un INNER JOIN

Les INNER JOIN sont le type de JOIN le plus couramment utilisé. Utilise-les lorsque tu veux récupérer des données qui ont des valeurs correspondantes dans les deux tables.

L'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 sente exclu à 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 d'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é sans 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 Chocolate
Bob Vanilla
Charlie Strawberry
David Chocolate
Eve NULL

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

Quand utiliser un OUTER JOIN

Utilise les OUTER JOIN lorsque tu veux 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 appena fait 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