Prérequis pour l'apparition de l'opérateur JOIN
À mesure que la quantité de données dans les tables augmente, des valeurs en double y apparaissent souvent. Par exemple, la table des produits contient des noms de marque. qui se répètent parfois. Il serait utile d'avoir une table de marque séparée pour eux, qui contiendrait, par exemple, ces données :
- id - identifiant de la marque ;
- nom – nom de marque ;
- company_owner - le nom de la société propriétaire de la marque ;
- company_contacts - contacts de l'entreprise du propriétaire de la marque.
Ensuite, nous voudrions créer une table d'adresses dans laquelle nous pourrions mettre toutes les adresses :
- id – adresses id ;
- pays;
- région;
- ville;
- rue;
- loger;
- zipper.
De plus, dans cette table, il serait possible de stocker non seulement les adresses des entreprises propriétaires de marques, mais également les adresses des clients et des employés. Et cette approche est simplement une conséquence de la croissance de la quantité de données (le nombre de lignes dans les tables). Cela facilite la manipulation des données dans les tables et maintient leur intégrité.
Lorsque vous avez 5 employés, vous pouvez simplement entrer leur profession dans la colonne profession . Si vous avez 5 000 employés dans votre entreprise, vous avez besoin d'un tableau avec une liste de x professions et de leurs responsabilités.
Soit dit en passant, dans le langage Java, il y a quelque chose de similaire. Si vous avez beaucoup de code dans une méthode, vous souhaitez la diviser en plusieurs méthodes. S'il existe de nombreuses méthodes dans une classe, je souhaite la diviser en plusieurs classes.
C'est pourquoi les grandes bases de données ont des milliers de tables. Et presque toutes les requêtes sont exécutées sur plusieurs tables à la fois. Et le produit cartésien des lignes de trois tables dans chacune desquelles il y a mille enregistrements est déjà un milliard de lignes.
Mais le simple fait de filtrer un milliard de lignes à l'aide de WHERE peut prendre des heures. Par conséquent, les créateurs du langage SQL ont proposé leur solution - l'opérateur JOIN.
Présentation de l'opérateur JOIN
L'opérateur JOIN est utilisé pour indiquer explicitement au serveur SQL que nous n'avons pas besoin d'un produit cartésien de toutes les lignes de tables pour tous, mais d'un collage intelligent des lignes de différentes tables qui se réfèrent les unes aux autres à l'aide d'un ID (ou d'une autre manière) . Le serveur dispose d'un algorithme distinct pour le traitement des jointures de table à l'aide de l'opérateur JOIN, ce qui permet d'effectuer ces opérations beaucoup plus rapidement. La forme générale de l'opérateur JOIN est la suivante :
table 1 JOIN table 2 ON condition
Il est dit ici que vous devez combiner les tables table1 et table2 en une seule table et utiliser la condition comme critère de jointure .
Reprenons notre vieil exemple :
SELECT * FROM employee, task WHERE emploee.id = task.emploee_id
Et réécrivez-le en utilisant l'opérateur JOIN :
SELECT * FROM employee JOIN task ON emploee.id = task.emploee_id
Les deux requêtes donneront le même résultat dans notre cas, mais c'est uniquement parce que les requêtes sont très simples. À l'avenir, WHERE vous permet de créer exactement le filtre de ligne, et celui spécifié après ON vous permet d'écrire des scripts complexes pour lier les tables. Vous pouvez également utiliser des alias (alias de table) lors de l'utilisation de l'instruction JOIN. Exemple:
SELECT * FROM employee e JOIN task t ON e.id = t.emploee_id