les requêtes de sélection demeurent les plus intéressantes, lorsqu'elles s'appliquent à plusieurs tables. Mais pour cela, il est nécessaire d'exécuter des commandes de jointure afin de pouvoir extraire des données de ces tables.
Il existe de nombreuses manières de joindre des tables dépendant souvent de l'implémentation utilisée. Néanmoins, la plupart des commandes de jointures accomplissent leurs opérations sur des colonnes communes aux différentes tables. Ainsi, les jointures sont possible uniquement sur des tables possédant des colonnes correspondantes comme une clé étrangère se relierait à une clé primaire.
Des tables mises en relation les unes avec les autres, peuvent facilement délivrer des informations recoupées. Si aucune instruction de jointure n'est fournie dans une requête de sélection, alors cette dernière renverra la totalité des lignes présentes dans les tables concernées.
Une jointure d'égalité symbolisée par EQUIJOIN ou INNER JOIN crée une relation de correspondance entre des tables.
SELECT l.Nom, e.Nom, c.Nom FROM Logiciel AS l, Editeur AS e, Categorie AS c WHERE l.Num_Editeur = e.Num_Editeur, AND l.Num_Categorie = c.Num_Categorie SELECT l.Nom, c.Quantite, cl.Nom, c.Prenom FROM Logiciel AS l INNER JOIN Commande AS c INNER JOIN Client AS cl ON c.Num_Client = cl.Num_Client ON l.Num_Logiciel = c.Num_Logiciel
SELECT cl.Nom, cl.Prenom, l.Nom, (l.Prix * cmd.Quantite) AS Montant, m.Nom FROM Logiciel l, Client cl, Commande cmd, Monnaie m WHERE cmd.Num_Client = cl.Num_Client AND l.Num_Logiciel = cmd.Num_Logiciel AND l.Num_Monnaie = m.Num_Monnaie
Une jointure de non-égalité NON-EQUIJOIN permet de sélectionner des enregistrements dont les valeurs de colonnes ne correspondent pas.
SELECT s.Sexe, cl.Nom, cl.Prenom FROM Logiciel AS l, Commande AS cmd, Sexe AS s WHERE cl.Num_Client != cmd.Num_Client, AND cl.Num_Sexe = s.Num_Sexe
Les jointures externes OUTER JOIN sont employées pour retourner tous les enregistrements, y compris ceux ne possédant aucune correspondance. Ces jointures peuvent s'appliquer à gauche (LEFT), à droite (RIGHT) ou sur les deux (FULL).
SELECT cl.Nom, cl.Prenom, cmd.Num_Commande FROM Client AS cl, Commande AS c WHERE cl.Num_Client (+) = cmd.Num_Commande SELECT cl.Nom, cl.Prenom, cmd.Num_Commande FROM Client AS cl LEFT OUTER JOIN Commande AS c ON cl.Num_Client = cmd.Num_Commande -- est équivalent à SELECT cl.Nom, cl.Prenom, cmd.Num_Commande FROM Commande AS c RIGHT OUTER JOIN Client AS cl ON cl.Num_Client = cmd.Num_Commande
Les jointures réflexives sont utilisées pour joindre une table à elle-même.
SELECT cl1.Nom, cl1.Prenom, cl2.Nom, cl2.Prenom FROM Client AS cl1, Client AS cl2 WHERE cl1.Num_Client = cl2.Num_Client SELECT cl1.Nom, cl1.Prenom, cl2.Nom, cl2.Prenom FROM Client AS cl1 SELF JOIN Client AS cl2 ON cl1.Num_Client = cl2.Num_Client