Création de vues

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 vues. Les vues sont en quelque sorte une surcouche aux tables, c'est-à-dire qu'elles définissent comment on va accéder aux données, mais ne contiennent pas en elles-mêmes de données. Je vous montre comment est-ce qu'on peut créer des vues et comment on peut s'en servir dans le document que vous pouvez télécharger. Pour commencer, on va se créer une table Medoc2 qui va contenir le jeu de données à partir duquel on va travailler. Cette table Medoc2 contient toutes les colonnes de la table Medoc, mais seulement une vingtaine d'enregistrements, ceux pour lesquels on a le nom du médicament qui contient 49 caractères au plus. Donc on peut avoir un aperçu de la table Medoc2 ici. A partir de cette table Medoc2, on va créer une vue. Dans un premier temps, on va créer une vue modifiable. Le script ou l'instruction de création d'une vue monotable modifiable est le suivant. On va mettre Create or Replace. Le Or Replace est optionnel. S'il est indiqué, ça veut dire que s'il y a une vue qui porte le même nom que la vue qu'on est en train de créer dans notre base de données, cette vue préexistante sera remplacée par celle qu'on est en train de créer. On définit ensuite Algorithm égale Merge. Ça va nous permettre de faire en sorte que cette vue puisse nous permettre de modifier les données. Les modifier, d'en insérer ou de les supprimer. Donc clairement, ce qu'on va modifier, insérer ou supprimer, ce sont les données de la table sous-jacente. En l'occurrence, ici, ce sera la table Medoc2. Donc View, puisqu'on précise qu'il s'agit d'une vue que l'on souhaite créer. Le nom de la vue. Ici, on va l'appeler vue Medoc. Et ensuite, on définit une requête qui sert de définition à cette vue. C'est-à-dire qu'à chaque fois qu'on va consulter cette vue, c'est comme si on exécutait cette requête-là. Select nom DataMM from Medoc2. En clair, la vue ne contient pas en elle-même les données qu'on va extraire avec cette requête. Elle contient juste l'instruction SQL qui permet d'accéder à ces données. Donc, créons cette vue. Et si ensuite, j'exécute l'instruction SelectAll from le nom de la vue, cette fois-ci, donc en fait, je peux utiliser une vue comme une table, eh bien, j'ai uniquement la colonne Nom et DataMM de ma table Medoc2. Et j'ai tous les enregistrements, j'ai les 20 enregistrements que j'avais dans la table Medoc2. Ce sont exactement les mêmes. Et on constate qu'ici, le nom des colonnes projetées dans ma vue a été défini implicitement par le nom des colonnes que j'ai projetées dans ma clause, dans ma requête Select. Je peux cependant choisir de nommer spécifiquement les colonnes de ma vue. Ça peut être intéressant en particulier, soit quand on souhaite rendre accessibles des informations. C'est-à-dire que dans une table, on peut très bien avoir des noms de colonnes qui sont relativement peu explicites. On peut très bien créer une vue en renommant les noms de ces colonnes pour les rendre plus « user-friendly ». Ça peut être intéressant aussi d'utiliser une vue pour des raisons de sécurité, parce qu'on peut très bien avoir une table qui contient des colonnes qu'on ne souhaite pas rendre accessibles et qu'on va, du coup, omettre dans la définition de la vue. Très clairement, on pourrait envisager qu'on ait une table qui contient par exemple des informations sur les salariés d'une entreprise avec leur salaire et qu'on n'ait pas envie de communiquer l'information sur le salaire à tout le monde. On pourrait très bien créer une vue qui omette la colonne qui contient le salaire, auquel cas les personnes qui accèdent à cette vue n'auront pas accès au salaire. On reviendra ultérieurement dans d'autres vidéos sur la gestion des utilisateurs et des droits qui leur sont attribués. Pour l'instant, continuons sur les vues. Il existe deux manières de nommer les colonnes d'une vue de manière explicite. Soit en indiquant entre parenthèses le nom des colonnes après le nom de la vue. Donc si j'exécute cette instruction et que je rafraîchis ma vue, je vois que cette fois-ci j'ai bien les noms que j'ai spécifiés. Une autre manière de le faire aurait été d'associer au nom des colonnes projetées dans la requête select de définition de la vue des alias. Si j'exécute cette instruction, les noms des colonnes ne vont pas changer puisque j'ai utilisé les mêmes noms que précédemment. Pour vous montrer qu'une vue n'est pas autonome, on va vider la table Medoc2 et voir maintenant ce qu'il y a dans la vue. On voit qu'il n'y a plus rien dans cette vue. Pourquoi ? Parce que la vue repose sur la table Medoc2 et comme on a purgé la table Medoc2 de tous ses enregistrements, la vue ne donne accès à plus aucun enregistrement. Donc on va réinsérer des enregistrements dans la table Medoc2, les mêmes que précédemment, et on constate que cette fois-ci on a de nouveau les informations qui sont accessibles dans notre vue. Il faut avoir en tête aussi que quand on renomme la table ou les tables qui sont utilisées dans la requête de définition d'une vue, la vue n'aura plus accès aux informations de la table, c'est-à-dire que la mise à jour du nom ne sera pas répercutée sur la requête de définition de cette vue. Par exemple ici, je vais renommer ma table Medoc2 en Médicament2 Si j'essaye désormais d'accéder à ma vue, je vais avoir un problème. On va me dire qu'on ne peut plus accéder à ces informations. Donc je vais faire la procédure inverse, c'est-à-dire renommer la table que j'avais appelée Médicament2, donc on peut se rendre compte ici, cette table Médicament2, la renommer pour qu'elle ait de nouveau le nom Médoc2. On va rafraîchir pour s'assurer que ça a bien été pris en compte, donc elle est bien renommée, et cette fois-ci, si j'exécute cette instruction, j'ai accès aux données telles que définies dans la requête de définition de ma vue. Une vue modifiable permet de modifier les enregistrements de la table à laquelle elle accède, permet éventuellement d'en insérer et permet d'en supprimer. On peut s'en assurer ici. Par exemple, je vais mettre à jour la vue Médoc de telle manière à ce que j'attribue la date et l'heure courante à tous les enregistrements dans la colonne AMM. Notez qu'ici, il s'agit bien du nom de la colonne de la vue, et non pas du nom de la colonne associée dans la table sur laquelle la vue repose. Si j'exécute cette instruction, je peux m'assurer que dans la vue, la date a été modifiée pour tous les enregistrements. Si je regarde dans la table Médoc 2 sous-jacente, et que je regarde la colonne date AMM, je vois que ça a été effectivement répercuté sur la table sur laquelle la vue repose. Je peux aussi choisir de supprimer des enregistrements dans ma vue. A ce moment-là, je n'ai plus aucun enregistrement accessible dans ma vue, ni dans ma table d'ailleurs. Maintenant que notre table est vide, on peut se dire qu'on va peut-être réussir à insérer des enregistrements. En fait, ce n'est pas si simple, parce que ça dépend de la structure de la table sous-jacente, et en particulier des valeurs par défaut qui sont attribuées aux colonnes. C'est-à-dire que quand je vais faire une mise à jour dans ma vue, je ne vais pouvoir fournir d'informations que pour les colonnes de la vue. Sauf que la table sous-jacente dispose d'autres colonnes, et pour certaines de ces colonnes, il peut très bien ne pas y avoir de colonnes par défaut. Donc quand je vais insérer des enregistrements dans ma vue, je ne vais pas renseigner de valeur par défaut, de valeur pour les colonnes qui n'ont pas de valeur par défaut. Et donc ça va poser un problème. Essayons voir. Voilà, je n'y arrive pas. Alors voyons voir la structure de notre table Medoc2, et on constate qu'on a certaines colonnes qui sont nullables, donc pour lesquelles je pourrais très bien ne pas fournir de valeur lorsque je fais une insertion dans ma vue, mais il y en a pour lesquelles c'est bloquant. Par exemple, la colonne titulaire est non-nullable. Je suis obligé de renseigner un nom de titulaire. Or, quand je fais une insertion par ma vue, je ne peux pas fournir le titulaire. Et par ailleurs, j'ai ici une colonne aussi qui est non-nullable. Alors ce que je vais faire, c'est que je vais modifier la structure de ma table pour pouvoir faire cette insertion. Je peux m'assurer que ma table a bien été changée. Par exemple, j'ai ma colonne titulaire qui est maintenant nullable. Donc si j'essaye d'insérer des enregistrements, cette fois-ci ça va fonctionner. Et je peux m'en assurer. Directement sur la table Medoc2, je vois que j'ai eu un enregistrement de rajouté avec les valeurs que j'avais indiquées. Et pour toutes celles pour lesquelles je n'ai pas fourni l'information, on a une valeur par défaut qui a été choisie. Et en l'occurrence, comme c'était déjà ennullable, c'est nulle. J'aurais pu choisir d'autres valeurs par défaut que nulle. Dans ce cas, ça aurait été la valeur par défaut pour chacune de ces colonnes qui aurait été choisie. Intéressons-nous maintenant à la création de vues non modifiables. Donc on va utiliser un script très similaire à celui qu'on a utilisé précédemment. La différence étant que cette fois-ci, on n'aura pas un algorithm égale mergeMetumpTable. Pour le reste, on choisit de projeter les mêmes colonnes en utilisant les mêmes noms. Donc si j'exécute cette instruction, ma vue a été créée et valorise les données qui se trouvent encore dans la table Medoc2. Donc les données que je viens d'insérer. On va remettre à jour le contenu de la table Medoc2 pour avoir un jeu d'enregistrement qu'on va pouvoir exploiter en vidant la table puis en insérant les mêmes enregistrements que précédemment. Donc là j'ai toujours une vingtaine d'enregistrements les mêmes que précédemment. Cette vue a été déclarée comme non modifiable donc je ne pourrai pas exécuter de requête update, insert ou delete. Donc je pourrais essayer d'exécuter ces trois instructions-là mais aucune d'entre elles ne fonctionnera. Alors d'une manière générale, si une vue s'appelle une vue, c'est bien pour donner l'opportunité de consulter les données. Il est préférable d'utiliser les vues dans ce sens-là plutôt que d'autoriser la modification de données par l'intermédiaire d'une vue. On peut bien sûr créer des vues qui reposent sur plusieurs tables. Jusqu'ici on a toujours utilisé la table Medoc2 mais on peut très bien créer une vue qui repose sur 2, 3, 4, 5... un nombre important de tables si on le souhaite. Ici par exemple, on crée une vue qu'on nomme vue immunobovins qui va regrouper les médicaments de nature immunologique destinés aux bovins. Pour ce faire, la requête de définition implique trois tables. La table Medoc, la table Medoc animaux et la table animaux. Ces tables sont reliées par des jointures internes sur la base de la correspondance clé primaire-clé étrangère. Si j'exécute cette instruction, j'ai une vue assez rachoutée dans ma base de données. Je vois ici d'ailleurs que j'ai un répertoire dans les objets de ma base de données. Les vues sont des objets à part entière de la base de données. J'ai la vue que j'ai créée précédemment, la vue Medoc, et la vue immunobovins qui s'est rajoutée ici. Si je déplie l'arborescence, je peux constater que j'ai bien les trois colonnes que j'ai précisées ici. Cette vue, je peux la consulter telle qu'elle. Je vois que j'ai un certain nombre d'informations, mais je peux aussi m'en servir dans d'autres requêtes, éventuellement même des requêtes plus complexes. Les vues sont aussi une manière de découper des requêtes complexes en segments, en petits éléments qu'on va pouvoir ensuite utiliser. Seulement, une vue est destinée à exister durablement dans notre base de données. C'est pour ça, d'ailleurs, qu'elle figure ici dans les collections d'objets de notre base de données. L'idée, quand on crée une vue, c'est surtout d'utiliser quelque chose, de créer un objet qu'on va utiliser durablement. Si on doit segmenter une requête complexe pour créer temporairement des segments qu'on va réutiliser pour finalement exécuter la requête dans sa globalité, à ce moment-là, il vaut mieux passer par des tables temporaires ou par des CTE. On en parlera dans les vidéos à venir. Je peux, par exemple, valoriser cette vue immunobovins en rajoutant, par exemple, une restriction qui va me permettre d'extraire de la liste des médicaments immunologiques destinés aux bovins uniquement ceux qui sont produits par le laboratoire CEVA. Il est bien sûr possible de créer des vues qui vont faire des calculs. S'il peut s'agir, par exemple, de calculs d'agrégation, c'est exactement le cas dans une vue qu'on utiliserait à des fins statistiques. Une telle vue, bien sûr, ne sera pas modifiable et il est préférable de la déclarer comme telle. C'est ce qu'on fait ici dans cette instruction qui nous permet de créer une vue que j'ai appelée vue stat où je précise que l'algorithme est égal à ThumbTable, qui en fait une vue non modifiable et donc j'extrais de ma table Medoc2 un certain nombre de statistiques, je dénombre les enregistrements, j'extrais la date minimale et la date maximale d'AMM. Si j'exécute cette instruction, je crée donc une vue et je peux ensuite afficher les informations de cette vue. C'est particulièrement intéressant de créer une vue statistique si on est à consulter les mêmes statistiques régulièrement, ça nous évite d'avoir à réécrire le script qui nous permet de générer ces statistiques. On utilise dans ce cas la vue comme un conteneur d'instructions SQL en quelque sorte. On peut bien sûr supprimer des vues, comme on le fait d'ailleurs pour des tables. On peut le faire vue par vue ou on peut le faire en utilisant une liste de vues. Par exemple, dans la première instruction, je supprime uniquement la vue statistique. Je vois qu'elle a disparu des vues qui sont recensées dans ma base de données et si j'exécute la dernière instruction, j'ai supprimé les deux dernières vues qui restaient dans ma base de données.

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