Insertion de données

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 à la manière de faire des insertions d'enregistrement dans une table. Alors, je vais vous apporter un certain nombre d'informations en commentant ce script que vous pouvez retrouver en téléchargement. On va commencer par créer une table MEDOC2, puisqu'on l'a supprimé dans la vidéo précédente. Seulement, on va apporter quelques modifications par rapport à ce qu'on a fait précédemment. Alors, je reviendrai en détail ultérieurement sur la procédure de création de table. Je veux seulement, ici, créer une table que je vais appeler MEDOC2 et qui va avoir quelques particularités. On a, pour commencer, une première colonne qui porte le nom ID, qui est une colonne qui va être générée. Elle contient un entier qui est automatiquement incrémenté d'un enregistrement sur l'autre. Donc, on part de 1 pour le premier enregistrement, pour le deuxième, ce sera 2, etc. On n'a pas besoin de fournir forcément une valeur pour ce champ. Par contre, il doit impérativement être renseigné. C'est-à-dire que si on essaye d'insérer un enregistrement en indiquant qu'on ne veut pas de valeur pour ce champ, ce sera refusé. Ensuite, on a la colonne, le champ NON, qui est indiqué comme note nulle. Cela veut dire qu'il doit impérativement contenir une valeur lorsqu'on fait des insertions. Il est aussi marqué comme unique. Cela a une incidence sur les insertions dans la mesure où on impose que cette colonne ne puisse pas contenir sur l'ensemble des enregistrements deux fois la même valeur. On a le titulaire d'AMM qui est NON nulle également. Une valeur doit être fournie. Pour la nature du médicament, c'est NON nulle. En plus de ça, on dispose d'une valeur par défaut qui est chimique. Cela veut dire que si on insère un enregistrement sans fournir de valeur pour ce champ, la valeur chimique sera utilisée par défaut. On crée donc la colonne date d'AMM de type dateTime, c'est-à-dire qu'elle va contenir aussi bien la fraction date que heure de la date, et qui est initialisée par défaut au currentTimeStamp, c'est-à-dire la date et l'heure courante. Contrairement à la date de RCP, qui est une colonne nulle par défaut et qui n'est pas initialisée à une valeur donnée lorsqu'on fait une insertion. On va exécuter cette première instruction, et ça va nous rajouter dans notre base de données une table Medoc2. Cette table, si on essaie de regarder ce qu'il y a dedans aujourd'hui, en ce moment, elle est vide. Par défaut, quand on crée une table, elle est vide. On va avoir un certain nombre d'enregistrements, de renseignements à indiquer ici, donc bien sûr les noms des colonnes, le type de données qu'elles contiennent, et les éventuels index. Alors j'y reviendrai plus tard. On a en particulier ici l'index unique qui concerne la colonne nom, qui impose qu'on n'ait pas deux fois la même valeur dans cette colonne. Et puis on a une clé primaire sur la colonne ID, qui impose de la même manière aussi qu'on n'ait pas deux fois la même valeur dans cette colonne-là. On peut afficher ces informations de manière un peu plus détaillée en exécutant cette instruction-là, DESK ou DESCRIBE. Il suffit de faire un CTRL SPACE sur l'éditeur au moment où on tape le dernier caractère pour avoir les suggestions de mots-clés. Ici j'ai mis le plus court. Si j'exécute par exemple cette instruction, j'ai ici un certain nombre d'informations sur la table. Alors je vais renommer cet onglet pour avoir des informations, pour pouvoir y revenir ultérieurement, je vais l'appeler STRUCTURE. On a donc les sept colonnes qui forment notre table, on a par exemple pour la colonne NON l'indication qu'il s'agit bien d'un champ avec un index unique, on a la valeur par défaut pour la colonne NATURE, la valeur par défaut pour la colonne DATE d'AMM, le fait que la colonne ID soit un entier, une clé primaire auto-incrémentée. Donc je laisse cet onglet ouvert pour pouvoir ensuite y revenir par la suite. Et on va passer aux insertions à proprement parler. Pour faire une insertion de données dans une table, on utilise l'instruction INSERT INTO, suivie du nom de la table, suivie de la liste des colonnes dans lesquelles on veut insérer les données. Et ensuite le mot clé VALUES, et entre parenthèses une série de valeurs indiquées dans l'ordre dans lequel on a renseigné les colonnes juste au-dessus. Donc dans ce cas présent, on veut rajouter un enregistrement dans la table MEDOC2, de telle sorte à ce que la colonne ID ait la valeur 1, la colonne NOM ait la valeur NOM, la colonne titulaire la valeur LABO, etc. Les deux dernières colonnes contiennent des valeurs calculées, donc NOW qui retourne la date et l'heure courante. Donc si j'insère des données dans cette table en exécutant cette instruction, et que ensuite je reconsulte le contenu de ma table MEDOC2, je vais avoir les informations que j'ai renseignées juste avant. Donc on va renommer cet onglet MEDOC2. Il faut faire attention lorsque l'on affecte des valeurs explicitement, et en particulier pour les colonnes qui sont générées, dans la mesure où il ne faut pas qu'il y ait de violations de règles, de contraintes en particulier. Ici sur notre colonne ID qui est une clé primaire, il est interdit de stocker deux fois la même valeur. Donc si je devais exécuter une nouvelle fois cet enregistrement, j'aurais un problème. Je l'aurai également parce que le champ NOM ne peut pas non plus contenir deux fois la même valeur. Essayons pour voir. Mon éditeur me dit qu'il y a effectivement un problème. Et même si je mettais par exemple la valeur 2 ici, j'aurais de nouveau un problème parce que j'aurais une duplication de la valeur NOM. Par exemple si je mets NOM2 ici, là ça va pouvoir marcher. Et si j'exécute à ce moment-là, si je rafraîchis le contenu de la table, on voit que ça a pu se faire. Donc il peut être plus prudent d'utiliser des valeurs par défaut, et notamment pour les colonnes générées. Par exemple pour la colonne ID, on a la possibilité d'utiliser le mot-clé default qui va laisser MySQL générer lui-même la valeur qui convient. Donc supposons que j'exécute cette instruction, la valeur default va conduire à l'insertion d'un champ dont l'ID vaudra 3. Je peux utiliser bien sûr default sur d'autres colonnes qu'une clé primaire. Dans cette instruction, j'insère un nouvel enregistrement ayant une valeur par défaut pour 4 des colonnes, pour l'ID, mais également pour la nature. On se souvient que la nature a comme valeur par défaut chimique, et pour les deux dernières colonnes qui contiennent les dates. Pour ces deux dernières colonnes, on a la date d'AMM qui par défaut reçoit la date et l'heure du jour, et la colonne date RCP qui n'a pas de valeur par défaut. Je vais vider ma table avant d'exécuter cette instruction, et ensuite on va voir ce que ça donne. Du coup, j'ai effectivement un enregistrement qui a été ajouté, et pour lequel la valeur par défaut de la clé primaire a été insérée. Là c'est 1 puisque j'avais vidé ma table en utilisant TRUNCATE. En fait, la séquence recommence à 1. La valeur par défaut pour la colonne nature c'était bien chimique, pour la date d'AMM c'est la date et l'heure du jour, et pour la date de RCP, comme je n'avais pas de valeur par défaut, ça m'a mis la valeur nulle. On peut aussi choisir d'insérer explicitement des valeurs nulles. Encore faut-il que le champ accepte des valeurs nulles. Dans notre table, on a des informations sur les colonnes qui acceptent des valeurs nulles. Dans notre cas, les deux qui acceptent des valeurs nulles, c'est les deux dernières colonnes. Si j'exécute ces deux instructions, je vais d'abord vider ma table, puis insérer un enregistrement pour lequel on aura des valeurs nulles pour les deux derniers champs. Si je rafraîchis l'onglet mes docs, je vois que j'ai ce que j'attendais, on a bien des valeurs nulles pour les deux derniers enregistrements. C'est-à-dire que pour la date d'AMM, on a une valeur par défaut qui s'applique, sauf que si on demande à insérer explicitement la valeur nulle, on n'aura pas la valeur par défaut, mais on aura la valeur qu'on a demandé d'insérer, c'est-à-dire nulle. Alors, ça peut être assez laborieux, finalement, de spécifier toutes les colonnes dans lesquelles on veut insérer des valeurs. Dans cette table, on n'avait que sept colonnes, mais finalement, il y a des tables qui contiennent beaucoup plus de colonnes, et ça peut être assez laborieux de devoir indiquer à chaque fois le nom des colonnes. Lorsque cela est possible, on peut ne spécifier que les noms des colonnes dans lesquelles on veut faire des insertions. Dans ce cas, toutes les colonnes dont les noms sont omis, soit bénéficieront de la valeur par défaut s'il y en a une, soit contiendront nulle si le champ autorise les valeurs nulles. Ça veut dire que si on a une colonne dans notre table qui ne propose pas de valeur par défaut et qui n'accepte pas de valeur nulle, il faut obligatoirement qu'elle figure dans la liste des colonnes dans lesquelles on veut insérer les données, parce qu'autrement, l'insertion sera refusée. Si j'exécute cette instruction, je vais commencer par vider ma table, puis insérer un enregistrement en utilisant de manière implicite les valeurs par défaut pour les quatre autres colonnes de ma table. Ici, j'ai seulement spécifié le nom du médicament, du titulaire et la forme du médicament, puisque la forme ne bénéficie pas d'une valeur par défaut et est non nulle. J'étais obligé de le préciser. Je vois par contre que je n'ai pas précisé de valeur pour la colonne date d'AMM, et que c'est la valeur par défaut qui s'est appliquée, et que pour la date de RCP, je n'ai pas précisé de valeur, et c'est bien nulle qui a été insérée. Enfin, plutôt, il n'y a rien qui a été inséré dans cette colonne-là. Si j'avais essayé, par exemple, de faire une insertion dans la table sans préciser la forme, j'aurais eu une erreur. Pourquoi ? Parce que ça me précise clairement qu'elle n'a pas de valeur par défaut, et en plus, elle attend forcément une valeur, donc ça ne marchera pas. Jusqu'ici, on a inséré les enregistrements un par un, mais on peut les insérer en série, c'est-à-dire en insérer plusieurs à la suite. C'est ce que je fais ici. On a globalement la même forme que dans l'instruction précédente, à la différence qu'ici, j'ai une virgule et que j'ai un nouveau groupe de valeurs, et encore une fois, ici, une virgule et un groupe de valeurs. Ça veut dire qu'ici, je vais insérer dans ma table, qui contient actuellement un enregistrement, trois enregistrements de plus, et j'ai pris soin de ne pas utiliser deux fois la même valeur pour le nom du médicament, puisqu'on a un index unique sur cette colonne, donc j'ai mis nom 2 pour la deuxième ligne, nom 3 pour la troisième et nom 4 pour la quatrième. Si j'exécute cette instruction et que je rafraîchis ma page, je vois que j'ai bien eu les insertions qui se sont faites comme je l'attendais, avec la clé primaire qui s'est auto-incrémentée toute seule, la valeur par défaut pour la colonne nature qui s'est insérée toute seule, la valeur par défaut pour la date d'AMM, et une absence de valeur pour la colonne date RCP. Je vais purger ma table pour montrer, on l'a déjà vu au cours des vidéos précédentes, qu'on peut insérer des lignes qui viennent de l'exécution d'une requête. Ici, j'insère dans la table MEDOC2 des enregistrements en provenance de la table MEDOC. Il se trouve que ces tables ont la même structure à peu de choses près, et que les enregistrements qui vont être envoyés par l'exécution de cette requête vont satisfaire aux exigences de la table de destination. Si j'exécute cette instruction, je peux vérifier que j'ai bien 3 016 enregistrements qui ont été rajoutés automatiquement dans ma table MEDOC2.

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