Tables dérivées et jointures procédurales

Vidéo non disponible ! Réessayez plus tard
Cette vidéo fait partie de la formation
Apprendre MySQL 8.0 par la pratique
Revoir le teaser Je m'abonne
Transcription

Cette leçon fait partie de la formation
89,00€ Je commande

Formation incluse dans l'abonnement Elephorm Je m'abonne à Elephorm

DescriptionProgrammeAvis

Cette leçon fait partie de la formation
89,00€ Je commande

Formation incluse dans l'abonnement Elephorm Je m'abonne à Elephorm

Être capable de créer et exploiter une base de données MySQL au quotidien de manière autonome.

Cette formation a été conçue à destination d'un public sans connaissances préalables sur les bases de données, avec l'ambition de transmettre les notions fondamentales permettant d'entrer sereinement et efficacement dans l'univers des bases de données, et d'exploiter MySQL au quotidien de manière autonome.

Elle permet de tirer parti de logiciels de qualité conçus spécialement pour travailler avec les bases de données : MySQL Workbench et Datagrip.

Elle met l'accent sur la pratique, et comprend de nombreuses démonstrations, mises en situations, exercices corrigés et commentés.

Elle met à disposition en ressources téléchargeables 3 bases de données portant sur des thèmes variés (médicaments vétérinaires, sécurité routière, prénoms), les scripts SQL des démonstrations les plus longues, et intègre un code promotionnel vous permettant de bénéficier d'une prolongation à 4 mois de la période d'essai gratuite de Datagrip.

Voir plus
Dans cette vidéo, on va s'intéresser aux tables dérivées et aux jointures procédurales. Alors, ce sont des techniques qui nous permettent d'utiliser une instruction SQL imbriquée dans une autre, c'est-à-dire qu'on va utiliser le résultat d'une première instruction comme base de calcul pour une deuxième instruction qui s'exécutera donc ensuite. Je vous montre en étape comment on procède. Calculons, par exemple, le nombre d'AMM déposés par année. Une AMM, c'est une autorisation de MySQL Marché. Dans notre table Medoc, on a une liste de médicaments et pour chaque médicament, on a la date à laquelle l'AMM a été déposée. Donc, on sait maintenant récupérer l'année depuis une date, donc on va procéder à ce calcul. Alors, pour gagner du temps, j'ai déjà tout écrit. On va exécuter l'instruction suivante. Select year, qui nous permet de récupérer l'année, count the ID, qui va nous permettre de calculer le nombre d'enregistrements, on va faire un regroupement par année, count a group by year, et on va ordonner également par année décroissante, le tout depuis la table Medoc. Donc, si j'exécute cette requête, j'ai effectivement la liste des 45 années pour lesquelles on a des enregistrements, avec pour chacune d'entre elles, le nombre de médicaments qui ont été déposés cette année-là. Pour 2023, il n'y en a que 5 parce que mon jeu d'enregistrement n'est pas complet, mais pour les autres années, ça correspond à ce qui a été déposé. Maintenant, ce qu'on aimerait avoir comme information, c'est le nombre moyen d'AMM par an. On peut le calculer en réutilisant l'instruction SQL qu'on vient d'exécuter dans la clause from d'une autre instruction SQL. C'est ce qu'on fait ici. À l'intérieur des parenthèses qui suivent le from, on a l'instruction SQL qu'on vient d'exécuter, à l'exception près qu'on n'a pas le order by, on n'en a pas réellement besoin ici. On est obligé de donner un alias à la table qu'on utilise comme table dérivée, celle qui est entre parenthèses ici, c'est ce qu'on appelle une table dérivée, ce qui nous permet ensuite d'utiliser cet alias pour appeler la colonne de cette table dérivée et de calculer une moyenne. Si j'exécute cette instruction, j'ai 67, c'est le nombre moyen d'autorisation de mission de marché par année depuis 45 ans. Maintenant, on aimerait avoir la liste des années où le nombre d'AMM a été supérieur à cette moyenne. Alors, ça complique encore un petit peu les choses, mais on va procéder de la même manière. La différence, c'est qu'on va utiliser le résultat de l'instruction précédente dans la clause WHERE de l'instruction que l'on va exécuter. Ici, c'est exactement la même instruction que celle qu'on a exécutée précédemment. Dans la table qui comporte le nombre d'enregistrements, le nombre d'AMM par année, on veut uniquement les années pour lesquelles le nombre d'AMM est supérieur à la moyenne qu'on vient de calculer. Si j'exécute cette instruction, ça me donne une liste de 17 années pour lesquelles le nombre d'AMM a été supérieur à la moyenne qui était 67. On a une autre manière de procéder, comme souvent, qui est plus élégante et moins verbeuse, puisque à force d'imbriquer des requêtes, ça finit par être peu lisible. C'est de stocker temporairement le résultat du calcul de la moyenne dans une variable qu'on va déclarer à la volée avec cette instruction-là. Il faut, pour que cela fonctionne, que l'instruction SQL qu'on exécute, qui se trouve ici entre parenthèses, retourne une seule valeur. En exécutant cette instruction, on va donc stocker la moyenne calculée dans une variable qu'on appelle moyenne, qu'on précède du symbole arrow base, et on va pouvoir réutiliser cette variable ensuite dans une clause WHERE, ici. Cette instruction-là, c'est exactement la même que celle-ci, à la différence près, qu'au lieu d'utiliser une requête ici, on utilise une moyenne, enfin, on utilise une variable qui stocke cette moyenne. Le fait d'utiliser cette requête ici dans une clause WHERE, c'est ce qu'on appelle faire une jointure procédurale. Je vais exécuter donc ce premier script qui va me permettre de stocker la moyenne dans la variable moyenne, et ensuite, je vais réexécuter la dernière série d'instructions pour valoriser la valeur stockée dans cette variable, et on voit qu'on a exactement les mêmes valeurs. Une autre manière de procéder, c'est d'utiliser des CTE, comme on l'a déjà fait, donc je vous montre ici un exemple. On veut, par exemple, récupérer la liste des médicaments qui ont bénéficié d'une AMM les cinq années au cours desquelles il y a eu le plus d'enregistrements, le plus de dépôts d'AMM. Alors, on va procéder par étapes, de la même manière, on va commencer par calculer les cinq années au cours desquelles il y a eu le plus d'AMM, donc c'est globalement le même principe que précédemment. La différence, c'est qu'on va ordonner par nombre de dépôts d'AMM décroissant et qu'on va utiliser un Limit 5 pour récupérer uniquement les cinq enregistrements de tête. Donc, si j'exécute cette instruction, j'ai effectivement cinq années qui correspondent aux années pour lesquelles le nombre d'AMM a été le plus important. J'ai également projeté le nombre d'AMM. Je peux donc utiliser le résultat de cette instruction SQL et le stocker dans une table temporaire qu'on appelle une CTE avec l'instruction suivante, with CTE as, et donc j'encadre entre parenthèses cette instruction SQL. Ça me permet de réutiliser cette CTE dans la clause where ou dans la clause from, d'ailleurs, de l'instruction SQL qui suit immédiatement la déclaration de la CTE. Donc ici, cette instruction va me récupérer les médicaments pour lesquels l'année de dépôt d'AMM se trouve dans la liste des années ayant connu le plus de dépôts d'AMM. Si j'exécute ces deux instructions d'un coup, j'ai la liste de tous les médicaments, de toutes les données, de toutes les colonnes de la table Medoc, pour lesquelles l'année fait partie des cinq années qu'on a identifiées précédemment. Donc c'est une autre manière de procéder. Alors ici, j'ai utilisé le mot-clé IN, il y en a d'autres qu'on peut utiliser. Je vous en ai fait une liste ici et je vous explique dans quel contexte on va s'en servir. Le note IN, bien sûr, ce serait pour faire le contraire, c'est-à-dire si on veut par exemple les médicaments dont l'AMM a été obtenue une année qui ne figure pas parmi les cinq années ayant connu le plus de dépôts d'AMM, on utiliserait le note IN. Égale à NI, ça revient à la même chose qu'utiliser IN, cela signifie qu'on veut que l'année soit égale à n'importe laquelle des valeurs qui figurent dans la liste. Inférieur à NI, à ce moment-là, c'est inférieur à n'importe laquelle des valeurs. Supérieur à NI, supérieur à n'importe laquelle des valeurs. On a aussi la possibilité d'utiliser inférieur à ALL, supérieur à ALL, pour respectivement inférieur à toutes les valeurs et supérieur à toutes les valeurs.

Programme détaillé

Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Unions 06:39
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Je commande Je m'abonne
Nos dernières formations Code & Data
  • Nouveau
    Maîtriser FlutterFlow - De l'Idée à l'Application
    Découvrir
    Cette formation en FlutterFlow est l'outil idéal pour tout développeur souhaitant créer des applications mobiles robustes et interactives sans coder de manière complexe. Grâce à des modules complets et structurés, vous apprendrez à utiliser FlutterFlow et Firebase, à sécuriser vos données, à concevoir des interfaces utilisateur élégantes et à intégrer des API telles qu'OpenIA. Rejoignez-nous pour transformer vos idées en applications innovantes et performantes.
    4h08 57 leçons
  • Nouveau
    Webflow - Créer la landing Page d'OpenAI
    Découvrir
    À l'issue de cette formation, les participants seront capables de créer de manière autonome une landing page sophistiquée, similaire à celle d'OpenAI, en utilisant les fonctionnalités avancées de Webflow pour le design responsive et les interactions.
    3h48 19 leçons
  • Apprendre Svelte 3 et SvelteKit 1.0
    Découvrir
    Créez des applications web modernes et ultra-rapides avec notre formation "Apprendre Svelte 3 et SvelteKit 1.0". Rejoignez-nous et devenez un expert du développement JavaScript ! 🚀 #Svelte #SvelteKit #DéveloppementWeb
    7h42 77 leçons
  • Apprendre Vue JS 3
    Découvrir
    Apprenez à créer des applications web modernes avec notre formation "Apprendre Vue JS 3". Rejoignez-nous et maîtrisez ce puissant framework JavaScript ! 🚀 #VueJS #FormationWeb #Développement
    11h47 91 leçons
  • Gratuit
    Apprendre ChatGPT
    Découvrir
    Ce cours vise à fournir une compréhension approfondie de l'intelligence artificielle, en se concentrant sur l'utilisation pratique de ChatGPT et DALL-E. Les participants découvriront comment l'IA peut transformer des domaines variés tels que le marketing, le développement web, et le design graphique. Le contenu couvre les bases de l'IA, l'art de créer des prompts efficaces, l'utilisation de plugins avancés, et le codage assisté par IA. Des projets pratiques permettront d'appliquer ces connaissances dans des scénarios réels. Destiné aux professionnels de la technologie, aux marketeurs, aux développeurs, et à toute personne intéressée par l'IA, ce cours est une opportunité d'acquérir des compétences innovantes et applicables dans divers contextes professionnels et créatifs. Les prérequis incluent une compréhension basique de l'informatique et un intérêt pour l'IA. Le cours promet une aventure d'apprentissage enrichissante, ouvrant de nouvelles perspectives dans l'utilisation de l'intelligence artificielle.
    3h12 30 leçons

éditeur de vidéos pédagogiques

Des supports pédagogiques en vidéo, produits avec les meilleurs experts. Dans nos studios à Paris, Lyon ou Montpellier. Vous souhaitez travailler avec nous ?
image-micro