Cours SQL les sous-interrogations, tutoriel & guide de travaux pratiques en pdf.
Les jointures avancées
Généralités
Syntaxe de jointure SQL Server:
SELECT nom_table.nom_colonne, nom_table.nom_colonne[,nom_table.nom_colonne…] FROM {nom_table, nom_table}
WHERE nom_table.nom_colonne opérateur jointure nom_table.nom_colonne
Types de jointures
Il existe trois types généraux de jointure :
– les jointures internes qui comprennent les jointures naturelles et les équijointures
– les jointures croisées (jointures non restreintes)
– les jointures externes qui comprennent les jointures gauche, droite et externes intégrales
Les jointures internes ont été abordées dans la première partie du cours SQL.
Jointures croisées et non restreintes
Une jointure croisée ou non restreinte produit un ensemble de résultats qui comprend toutes les combinaisons de toutes les lignes entre les tables de la jointure. C’est en fait le produit cartésien des tables jointes. Par exemple si une table présente 8 lignes, et une autre 9, le résultat comprend 72 lignes.
Exemple : Produit cartésien des champs nom_éditeur et titre des tables titres et éditeurs. (La table éditeurs comprend 9 lignes, la table titres 18. L’ensemble comprendra donc 162 lignes)
Remarque : rarement utilisé
La jointure externe
Dans le cas d’une jointure interne ou croisée , lorsqu’une ligne d’une table ne satisfait pas à la condition de jointure, cette ligne n’apparaît pas dans le résultat final de la requête.
Il peut cependant être souhaitable de conserver les lignes d’une table qui ne répondent pas à la condition de jointure. On parle alors de semi-jointure ou de jointure externe.
On distingue 3 types de jointures externes :
Jointure externe gauche ou semi-jointure gauche : inclut toutes les lignes issues de la première table nommée
Jointure externe droite ou semi-jointure droite : inclut toutes les lignes issues de la deuxième table nommée
Jointure externe intégrale : inclut les lignes sans correspondance des tables droites et gauche
– jointures externes gauche et droite
Les jointures externes droite et gauche peuvent être créées en employant les opérateurs de jointure externe gauche « *= » et jointure externe droite « =* » dans la clause WHERE d’une instruction SELECT.
Exemple : on reprend l’exemple de la jointure entre une table client et une table CommandeClient
Si l’on considère la semi-jointure gauche, elle consiste dans l’exemple à ajouter au résultat de la jointure normale, l’ensemble des clients qui n’ont pas passé de commandes.
– Jointures externes intégrales ou jointure généralisée (FULL OUTER JOIN)
Les jointures externes intégrales sont utilisées lorsque deux tables sont jointes et que chacune contient plusieurs lignes qui ne correspondent à aucune ligne dans l’autre table. Elle consiste à faire appraître les lignes des deux tables qui ne satisfont pas à la condition de jointure.
La réalisation de la jointure externe intégrale peut se faire en utilisant l’union de la semi- jointure droite et de la semi-jointure gauche.
Rmq : Suivant la base de données utilisée, d’autres syntaxes sont possibles pour les jointures externes.
Inéquijointure
La mise en relation des colonnes communes à deux tables ne s’établit pas forcément par l’intermédaire d’une opération d’égalité. On parle alors d’inéquijointure. Les opérateurs possibles sont : >, <, <=, >=, < >.
L’autojointure ou jointure d’une table avec elle-même
Une autojointure relie les lignes d’une table avec d’autres lignes de la même table.
Pour joindre une table à elle même, vous devez lui affecter deux alias ( abréviation de table) afin que la table puisse être référencée comme deux tables distinctes. Les alias sont affectés dans la clause FROM en spécifiant l’alias après le nom de table.
L’utilisation d’un alias permet de renommer une des tables et évite les problèmes d’ambiguïté pour les noms de colonnes qui doivent être préfixées par le synonyme des différentes tables.
Langage de définition de données
Les étapes SQL
A partir d’un modèle relationnel en 3FN (troisième forme normale) et après une éventuelle optimisation de ce schéma, vous pouvez créer votre base de données à l’aide de votre SGBD relationnel incorporant généralement le langage SQL.
1. Création de(s) la base de données
2. Créer les tables et les index
3. Définir les autorisation d’accès à la base de données
4. Saisir les informations de la base de données
5. Mettre la base de données à la disposition des utilisateurs
6. Vérifier la protection des informations
Les vues
Principe de la vue
Une vue constitue une manière différente de consulter des données issues d’une ou de plusieurs tables de la base de données.
L’utilisateur qui interroge une vue à l’illusion d’accéder à une (ou plusieurs ) tables contenant réellement des données, alors qu’il exécute une instruction SQL faisant référence à une ou plusieurs tables réelles.
Définition
Les vues sont « des fenêtres dynamiques» sur la base de données. Une vue est une «table virtuelle » construite à partir d’une ou plusieurs tables.
Les objectifs d’une vue sont:
faciliter l’accès aux données,
masquer des données ou limiter l’accès aux informations sensibles et confidentielles,
contrôler l’intégrité des données,
accéder aux données de façon dynamique (en fonction de l’environnement)
Utilité des vues
Elles confèrent aux applications un certain degré d’indépendance face aux restructurations opérées au sein d’une base de données
Elles accroissent la sécurité des données (protection des colonnes).
Elles facilitent l’accès aux données et optimisent le partage des données entre les utilisateurs.
Elles simplifient la manipulation des données:
les requêtes les plus fréquemment utilisées sont définies comme des vues
les données dont la consultation est superflue ou inutile n’apparaissent pas dans la vue Dans la gestion des vues vous pouvez
prévoir des vues différentes par utilisateurs,
utiliser des colonnes de différentes tables,
interroger une vue comme s’il s’agissait d’une table de la base,
permettre aux utilisateurs d’effectuer des mises à jour, des créations et suppressions sur une base de données.
A. Langage de manipulation de données
A.1) Les sous-interrogations
A.1.1) Sous interrogations ramenant une ligne
A.1.2) Sous interrogations ramenant plusieurs lignes
A.1.3) Sous – interrogation multiple
A.1.4) Sous – interrogation synchronisée
A.1.5) Sous – interrogation testant l’existence
A.2) La division
A.2.1) Double forme négative
A.2.2) Utilisation de la fonction de comptage COUNT
A.3) Les jointures avancées
A.3.1) Généralités :
A.3.2) Jointures croisées et non restreintes
A.3.3) La jointure externe
A.3.4) Inéquijointure
A.3.5) L’autojointure ou jointure d’une table avec elle-même
B . Langage de définition de données
B.1) Les étapes SQL
B.2) Les vues
B.2. 1) Principe de la vue
B. 2.2) Définition
B.2.3) Utilité des vues
B.2.4) Création des vues
B.2.5) Les mise à jour à travers une vue
B. 2.6) Création de vues dynamiques
B. 2.7) Suppression d’ une vue