Modification de tables

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 instructions SQL qu'on peut utiliser pour modifier une table, que ce soit son nom, que ce soit les colonnes, les types, les contraintes qui s'y ajoutent ou que ce soit des contraintes applicables à la table. Pour ce faire, on va créer une table Présentation2 en clonant la table Présentation comme on l'a vu précédemment. Et ensuite, dans cette table, on va rajouter 5 enregistrements issus de la table Présentation. Donc, la table Présentation2 avec laquelle on va travailler dans cette vidéo a actuellement la structure et le contenu qui s'affichent en bas. 5 colonnes, 5 enregistrements. On va pouvoir déjà la renommer et on a deux manières de le faire. L'instruction AlterTable Présentation2, le nom actuel de la table, RenameTo Prés2, le nom de destination. Alors, si on exécute cette instruction, on voit qu'effectivement, ça a bien été pris en compte dans la liste des objets de notre base de données. Je peux aussi utiliser l'instruction RenameTable Prés2, donc le nom actuel, tout Présentation2, le nom de destination. Et donc, dans ce cas, je rétablis le nom d'origine. Je peux m'assurer que ça a bien été pris en compte en rafraîchissant les objets de ma base de données. Essayons maintenant d'ajouter des colonnes dans notre base de données. Et on a deux manières de le faire. Cette instruction-là, par exemple, va rajouter une colonne nommée Description après la colonne Nom et la colonne Description sera donc un VARCHARD 500 NULLABLE. Si j'exécute cette instruction et que je rafraîchis la requête précédente, je vois que j'ai effectivement une colonne Description qui s'est rajoutée après la colonne Nom. Alors, j'ai la possibilité d'utiliser autre chose que After, par exemple. Ici, je peux utiliser First. Si j'avais utilisé First, la colonne aurait été rajoutée en tête des colonnes. Par défaut, les colonnes sont rajoutées à la fin. Donc, si j'exécute cette instruction, là, je vais rajouter deux colonnes. Une colonne nommée Col1, de type Int, NULLABLE, avec 0 comme valeur par défaut. Et une colonne nommée Col2, du même type. Et elles vont être ajoutées à la fin de ma table. Si je vérifie le résultat, je vois que c'est effectivement ce que j'ai attendu. Alors, j'attire votre attention sur l'ajout de colonnes lorsqu'il est effectué sur une table contenant déjà des enregistrements. On a vu que pour Description, on avait NULL qui était inséré dans chacun des enregistrements de ma table. Ou plus exactement, une absence de valeur pour chacun des enregistrements déjà présents. En ce qui concerne les deux dernières colonnes que j'ai créées, c'est la valeur par défaut qui est utilisée pour chaque enregistrement préexistant. On voit que ça a été initialisé à 0 dans les deux cas. Donc ça veut dire aussi que si on crée une colonne non NULLABLE et qu'il y a déjà des enregistrements dans notre table, ça va poser un problème. Essayons ensuite de renommer une colonne. Par exemple, on va renommer la colonne Col1 pour lui donner le nom prix hors-taxe. Prix acheté, Col1 étant relativement peu explicite. On remarque qu'on a conservé le type, le côté NULLABLE et la valeur par défaut de cette colonne. En clair, avec l'instruction ALTER TABLE, le nom de la table suivi de CHANGE COLON, on ne fait que changer le nom de la colonne. On précise en premier le nom actuel de la colonne, puis ensuite le nom qu'elle doit prendre. Si j'exécute cette instruction et que je rafraîchis la requête précédente, je vois qu'ici j'ai désormais prix hors-taxe qui est indiqué. Je peux utiliser cette instruction CHANGE COLON pour à la fois changer le nom de la colonne et changer son type ou sa valeur par défaut ou un certain nombre de contraintes qui s'y appliquent. C'est ce que je fais ici dans cette instruction où je renomme la colonne 2 en prix TTC et où je change en même temps son type. On est parti d'un type INT, on va vers un type décimal 5 2. On était sur quelque chose de NULLABLE, on veut quelque chose de NOTE NULL. Et on enlève la contrainte, la valeur par défaut. Donc si j'exécute cette instruction et que je rafraîchis ma table, je vois que désormais la colonne qui s'appelait COL 2 s'appelle prix TTC et que le changement de type a bien été pris en compte parce que pour le coup on a un nombre décimal qui apparaît. Alors que pour le prix HORTAX qui était et qui est resté de type INT on est toujours avec 0 et non pas 0,00. Je peux néanmoins modifier le type d'une colonne sans changer son nom. Par exemple, j'utilise pour ce faire l'instruction ALTER TABLE le nom de la table suivi de MODIFY COLONNE cette fois-ci. Le nom de la colonne à modifier et ensuite le type que je veux utiliser pour cette colonne. Donc j'en profite pour passer dans ce cas d'un type INT NULL avec une valeur par défaut de 0 à un type décimal 5 2 NULL. Si j'exécute cette instruction et que je rafraîchis cette requête, j'ai de nouveau le même constat. Il faut faire attention à la compatibilité du changement de type avec les valeurs qui existent dans notre base de données et dans la table dans laquelle on modifie le type de la colonne en particulier. Par exemple, ici je vais modifier la table présentation 2 pour mettre à jour la colonne PRI TTC à 100€ sur tous les enregistrements. Donc j'exécute cette instruction et quand je rafraîchis la table, je vois que c'est passé à 100€ sur tous les enregistrements. Si maintenant j'essaie de modifier la colonne PRI TTC pour faire en sorte que ça devienne un décimal 4 2, ça ne passera pas. Pourquoi ? Parce que j'ai déjà 5 chiffres dans mon nombre. Donc la précision de 4 est insuffisante. Je peux le vérifier en exécutant cette instruction. Si par contre j'avais choisi un type décimal 6 2, ça n'aurait pas posé de problème. Si l'on souhaite modifier la valeur par défaut d'une colonne, on a cette instruction qui est utilisable. ALTER TABLE, le nom de la table. ALTER COLONNE, le nom de la colonne. Ici c'est PRI TTC. SET DEFAULT et ensuite la valeur qu'on veut affecter à la valeur par défaut de cette colonne. Donc ici je pars d'une valeur par défaut pour la colonne PRI TTC de 0, je la modifie pour qu'elle devienne 1. Donc si je rajoute un enregistrement dans ma table, à partir du prochain enregistrement, la valeur par défaut sera 1 si je ne précise pas de PRI TTC. Et je peux bien sûr aussi supprimer une valeur par défaut en exécutant l'instruction ALTER TABLE, le nom de la table, suivi de ALTER COLONNE, le nom de la colonne et DROP DEFAULT. Je peux bien sûr supprimer des colonnes dans ma table. Par exemple ici, je supprime la colonne PRI TTC en utilisant l'instruction ALTER TABLE, le nom de la table, suivi de DROP COLONNE, le nom de la colonne à supprimer. Donc je peux m'assurer que ça a bien été pris en compte. Alors que désormais, je n'ai plus le PRI TTC dans la liste de mes colonnes. On peut bien entendu rajouter des contraintes sur une table à postérie, d'ailleurs on l'a déjà fait à plusieurs reprises dans les vidéos de cette formation. Ici par exemple, je vais rajouter un index sur la colonne GTIN. Je peux aussi rajouter une contrainte, par exemple d'unicité sur une colonne. Il faut faire attention lorsque notre table contient déjà des données parce que rien ne nous garantit que cette contrainte sera applicable. Il peut y avoir des conflits avec les données déjà existantes. Par exemple ici, j'essaye de faire en sorte que la colonne NON contienne des valeurs uniques au travers des enregistrements présents dans la table. Si je regarde déjà dans ma table, je vois que ce ne sera pas possible parce qu'ici j'ai un flacon de 150 ml qui réapparaît ici, j'ai un flacon de 300 ml qui réapparaît ici. Donc très clairement, si j'essaye d'appliquer cette contrainte, ça me dira que ce n'est pas possible. Alors je peux modifier ma table. Je vais vous montrer une manière de le faire avec DataGrip qui est assez agréable. Par exemple ici, je vais mettre 15 ml. Je vais passer à l'enregistrement du dessous. Et puis là, je vais mettre 30 ml par exemple. À partir de là, je n'ai plus deux fois la même valeur. J'applique ici sur submit pour envoyer la requête. En fait, DataGrip génère tout seul la requête de mise à jour. Donc si je rafraîchis ma table ici, je vois que les modifications apportées aux données ont bien été prises en compte. Et si j'essaye cette fois-ci d'appliquer ma contrainte d'unicité, et bien elle passe. De la même manière, je peux ajouter à posteriori une contrainte check. Donc en utilisant l'instruction alter table, le nom de la table, add constraint, le nom de la contrainte. Alors encore une fois, il est important qu'on utilise des noms de contraintes qui sont uniques au travers de tous les objets de notre base de données. C'est pour ça qu'il est utile de suivre un certain nombre de conventions lorsqu'on nomme nos contraintes. Ici, je fais en sorte qu'on ne puisse pas ajouter d'enregistrement dans la table présentation pour lequel le prix TTC ne serait pas strictement supérieur à 10. Le prix hors-taxe serait strictement supérieur à 10. Je vois que la contrainte ne peut pas fonctionner parce que j'ai dans ma table des prix hors-taxe qui sont à 0. Je peux modifier à nouveau ma table pour mettre des prix supérieurs à 10. Par exemple 11, 12, 13, 14, 15. Je valide. Quand je rafraîchis ma table, j'ai les prix qui sont bien passés à des valeurs strictement supérieures à 10. Cette fois-ci, je peux appliquer ma contrainte. Je peux aussi utiliser une contrainte de clé étrangère. Il faut savoir que lorsque j'ai utilisé ici l'instruction LIKE, ça a dupliqué la table présentation, mais ça ne m'a pas créé une contrainte de clé étrangère. Je peux d'ailleurs m'en assurer en exécutant l'instruction SHOW CREATE TABLE. Je vois ici que je n'ai pas dans le script de création de cette table de contrainte de clé étrangère. J'ai effectivement l'index unique que je viens de créer. J'ai la clé primaire qui a été bien reprise. J'ai l'index que j'ai créé sur la colonne GTIN et la contrainte check, mais pas la clé primaire, la contrainte de clé étrangère. Donc, je vais créer cette contrainte de clé étrangère. Je peux m'assurer que ça a bien été pris en compte en rafraîchissant ce script, et je vois cette fois-ci que j'ai bien une contrainte de type clé étrangère dans ma table. Je vois aussi que MySQL a créé un index spécifiquement pour la colonne MEDOCID qui est le support de la clé étrangère. Je peux aussi le voir ici. J'ai ici une clé primaire et un index unique qui peut servir de clé candidate. J'ai une clé étrangère, j'ai quatre index, celui qui correspond à la clé primaire, l'index unique que j'ai créé, j'ai l'index associé à la clé étrangère et j'ai l'index que j'ai créé sur la colonne GTIN. Et puis j'ai une contrainte check que j'ai créée. Maintenant, comment faire pour supprimer des contraintes sur une table qui en est pourvue ? On peut supprimer tout type de contraintes, notamment, pour commencer, une clé primaire. Il y a toutefois une particularité, c'est que si on regarde le script de création de notre table, et en particulier la colonne qui est le support de la clé primaire, elle est auto-incrémentée. Si je supprime la clé primaire sur cette colonne, je vais avoir une erreur. Pourquoi ? Parce qu'une colonne auto-incrémentée doit être indexée ou doit être une clé primaire. Je peux essayer, par exemple, de le faire en exécutant l'instruction ALTER TABLE le nom de la table suivi de DROP PRIMARY KEY et ça va me dire que ce n'est pas possible. Ce que je vais faire, c'est que je vais modifier la colonne support de la clé primaire pour faire en sorte qu'elle ne soit plus auto-incrémentée. Je peux m'assurer que ça a été pris en compte et je vois que désormais, dans le script de création de la table, je n'ai plus la notion de l'auto-incrément. À partir de là, je peux supprimer ma clé primaire. Ici, elle est présente. Si j'exécute cette instruction, et que je rafraîchis, je vois que je n'ai désormais plus la clé primaire. Je vois aussi qu'ici, je n'ai plus qu'une seule clé, c'est la clé candidate. Je peux supprimer un index unique. Ici, je supprime l'index unique que j'ai créé. Je peux supprimer une contrainte check. Je supprime ici la contrainte check. Remarquez que les noms des contraintes qu'on utilise pour supprimer les contraintes, on les récupère soit en utilisant l'instruction showCreatable, comme je l'ai fait précédemment, et en allant voir ici le nom des contraintes. Par exemple, pour l'index unique, il était là. Pour la contrainte check, il était là. Mais on peut aussi les trouver ici. La contrainte check ici a disparu, donc je ne peux plus vous le montrer. Par contre, pour les index, ils sont encore là. Si j'essaye de supprimer ma clé étrangère, je vais utiliser le nom de la clé de la contrainte que je peux retrouver ici, ou que je peux retrouver ici. Je supprime ma clé étrangère. Maintenant, si je rafraîchis ma requête, je vois que désormais, je n'ai plus que deux index qui sont déclarés sur ma table. L'index sur la colonne GTIN et l'index que MySQL a créé tout seul lorsque j'ai créé ma contrainte de clé étrangère. MySQL le crée tout seul, mais il ne le supprime pas tout seul lorsqu'on supprime la contrainte de clé étrangère. Il faut penser à le faire. C'est ce que je vais faire ici. Je supprime cet index. Je n'ai désormais plus que l'index sur la colonne GTIN que je peux supprimer. Désormais, il n'y a plus de contraintes sur ma table. Je peux aussi m'en assurer ici en visualisant l'arborescence sous l'item Présentation 2. Je vois que je n'ai plus aucun index, aucune clé, aucune contrainte de déclarer. Voilà pour l'inventaire des instructions SQL qu'on peut utiliser pour modifier une table, son nom, les colonnes qu'elle contient, le type, les valeurs par défaut et les différentes contraintes qui s'appliquent aussi bien sur les colonnes que sur la table elle-même.

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