Afficher la pageAnciennes rĂ©visionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== đïž MySQL : organiser les donnĂ©es ====== {{tag>ntic mysql base_de_donnees programmation php linux logiciel_libre kaizen ermitezen}} ===== Bienvenue dans mon espace MySQL ===== Une application informatique a souvent besoin de mĂ©moriser des informations : des utilisateurs, des recettes, des articles, des rĂ©sultats, des paramĂštres, des dĂ©penses... Une base de donnĂ©es permet d'organiser ces informations afin de pouvoir les retrouver, les modifier, les relier et les exploiter. MySQL est un systĂšme de gestion de bases de donnĂ©es relationnelles particuliĂšrement utilisĂ© dans les applications Web, notamment avec PHP. Pour moi, MySQL est avant tout un outil pratique pour construire des applications personnelles et comprendre comment les donnĂ©es peuvent ĂȘtre organisĂ©es. L'objectif n'est pas de connaĂźtre SQL par cĆur. Il est de comprendre suffisamment les donnĂ©es pour pouvoir crĂ©er, modifier, rĂ©parer et faire Ă©voluer ses propres outils. ===== Qu'est-ce que MySQL ? ===== MySQL est un SGBD (systĂšme de gestion de bases de donnĂ©es) relationnelles. Une base relationnelle organise les informations principalement Ă l'aide de tables. On retrouve notamment : * Base de donnĂ©es : ensemble organisĂ© de tables et d'autres objets ; * Table : structure destinĂ©e Ă stocker un type d'information ; * Colonne : propriĂ©tĂ© ou caractĂ©ristique d'une donnĂ©e ; * Ligne : enregistrement individuel ; * ClĂ© primaire : identifiant permettant de distinguer les enregistrements ; * ClĂ© Ă©trangĂšre : Ă©lĂ©ment permettant de relier des informations entre tables. Par exemple, une application de gestion de recettes pourrait contenir : * une table "recettes" ; * une table "ingredients" ; * une table "categories". Les relations entre ces tables permettent d'Ă©viter autant que possible la duplication inutile des informations et de conserver une structure cohĂ©rente. ===== Comprendre avant de construire ===== Une bonne base de donnĂ©es commence avant mĂȘme d'Ă©crire la premiĂšre requĂȘte. Il faut d'abord se demander : * Quelles informations dois-je conserver ? * Comment sont-elles liĂ©es ? * Quelles informations peuvent ĂȘtre rĂ©pĂ©tĂ©es ? * Comment vais-je retrouver une donnĂ©e ? * Que se passe-t-il lorsque je la modifie ou la supprime ? Prendre quelques minutes pour rĂ©flĂ©chir Ă la structure peut Ă©viter beaucoup de problĂšmes plus tard. Une structure simple et comprise vaut mieux qu'une structure compliquĂ©e que l'on ne maĂźtrise pas. ===== MySQL et PHP ===== MySQL et PHP forment une combinaison classique pour crĂ©er des applications Web. On peut notamment les utiliser pour : * un site avec espace membre ; * une application de budget ; * un suivi personnel ; * un catalogue ; * un outil de gestion ; * un systĂšme de notes. La communication entre PHP et MySQL passe notamment par PDO, qui fournit une interface permettant Ă PHP de dialoguer avec diffĂ©rentes bases de donnĂ©es. Voir : * [[ntic:php:connexion-bdd|Connexion PHP/MySQL avec PDO]] * [[ntic:php:pdo|PDO et les bases de donnĂ©es]] ===== đ„ïž phpMyAdmin : observer et administrer ===== [[https://www.phpmyadmin.net/|phpMyAdmin]] est une interface Web permettant d'administrer une base MySQL. Il permet notamment de : * crĂ©er et modifier des bases ; * crĂ©er et modifier des tables ; * consulter les donnĂ©es ; * exĂ©cuter des requĂȘtes SQL ; * importer et exporter des donnĂ©es ; * effectuer certaines opĂ©rations de maintenance. C'est un outil particuliĂšrement pratique pour apprendre, observer ce qui se passe dans une base et effectuer rapidement certaines opĂ©rations d'administration. Mais l'interface graphique ne remplace pas la comprĂ©hension de SQL. Voir ce que fait un outil est intĂ©ressant ; comprendre ce qu'il fait est encore mieux. ===== đ Les fiches : apprendre SQL ===== Les fiches servent de mĂ©moire externe et de rĂ©fĂ©rence rapide. Elles privilĂ©gient : * la comprĂ©hension ; * les exemples simples ; * la pratique ; * les bonnes habitudes ; * l'autonomie. ==== Les fondamentaux ==== * [[ntic:mysql:creation-base|CrĂ©er une base de donnĂ©es]] * [[ntic:mysql:creation-table|CrĂ©er une table]] * [[ntic:mysql:types-donnees|Les types de donnĂ©es]] * [[ntic:mysql:cles|ClĂ©s primaires et clĂ©s Ă©trangĂšres]] ==== Interroger les donnĂ©es ==== * [[ntic:mysql:select|SELECT : rechercher des donnĂ©es]] * [[ntic:mysql:where|WHERE : filtrer les rĂ©sultats]] * [[ntic:mysql:order-by|ORDER BY : trier les rĂ©sultats]] * [[ntic:mysql:limit|LIMIT : limiter les rĂ©sultats]] ==== Modifier les donnĂ©es ==== * [[ntic:mysql:insert|INSERT : ajouter des donnĂ©es]] * [[ntic:mysql:update|UPDATE : modifier des donnĂ©es]] * [[ntic:mysql:delete|DELETE : supprimer des donnĂ©es]] ==== Aller plus loin ==== * [[ntic:mysql:jointures|Les jointures SQL]] * [[ntic:mysql:index|Les index]] * [[ntic:mysql:transactions|Les transactions]] ===== âïž Les snippets SQL ===== Les snippets sont de petites requĂȘtes ou structures conservĂ©es pour pouvoir ĂȘtre adaptĂ©es lors d'un prochain projet. Ils peuvent notamment servir Ă : * crĂ©er rapidement une structure ; * retrouver une requĂȘte oubliĂ©e ; * tester une idĂ©e ; * Ă©viter de réécrire une solution dĂ©jĂ comprise. Ils restent cependant des aides-mĂ©moire, pas des recettes magiques. Exemples : * [[ntic:mysql:snippet:creation-table|CrĂ©er une table]] * [[ntic:mysql:snippet:ajout-utilisateur|Ajouter un utilisateur]] * [[ntic:mysql:snippet:recherche|RequĂȘtes de recherche courantes]] * [[ntic:mysql:snippet:backup|Sauvegarde d'une base]] ===== đ§ Une approche Ermite Zen des donnĂ©es ===== ==== SimplicitĂ© ==== Une base de donnĂ©es doit rester aussi simple que possible. Une structure compliquĂ©e peut parfois ĂȘtre nĂ©cessaire, mais la complexitĂ© ne doit pas devenir un objectif. Faire simple lorsqu'on peut faire simple. ==== Organisation ==== Chaque donnĂ©e doit avoir une place comprĂ©hensible. Une bonne organisation facilite la lecture, la maintenance et les Ă©volutions futures. Cette idĂ©e rejoint notamment l'esprit du 5S : rĂ©duire le dĂ©sordre et rendre l'organisation visible et comprĂ©hensible. ==== ComprĂ©hension ==== Utiliser SQL ne signifie pas simplement mĂ©moriser "SELECT", "INSERT" ou "UPDATE". Il faut progressivement comprendre : * comment les tables sont structurĂ©es ; * comment les donnĂ©es sont reliĂ©es ; * comment une requĂȘte est exĂ©cutĂ©e ; * pourquoi une requĂȘte fonctionne ; * pourquoi elle peut ĂȘtre lente ou incorrecte. La documentation et les outils de recherche peuvent servir de mĂ©moire externe. ==== Kaizen ==== Une base de donnĂ©es n'est pas forcĂ©ment parfaite dĂšs sa crĂ©ation. On peut l'amĂ©liorer petit Ă petit : * corriger une structure ; * simplifier une requĂȘte ; * ajouter un index pertinent ; * amĂ©liorer la sĂ©curitĂ© ; * supprimer des donnĂ©es inutiles ; * documenter une partie obscure ; * amĂ©liorer les sauvegardes. Une petite amĂ©lioration reste une amĂ©lioration. ===== đ DonnĂ©es, sĂ©curitĂ© et autonomie ===== Une base de donnĂ©es contient parfois des informations importantes. Il faut donc penser dĂšs le dĂ©part Ă : * la sĂ©curitĂ© des accĂšs ; * la validation des donnĂ©es ; * les requĂȘtes prĂ©parĂ©es ; * les permissions ; * les sauvegardes ; * la rĂ©cupĂ©ration des donnĂ©es. L'autonomie numĂ©rique ne consiste pas seulement Ă savoir crĂ©er une base. Elle consiste aussi Ă savoir ne pas perdre ce que l'on a créé. ===== đ§ MySQL dans un environnement libre ===== MySQL s'intĂšgre naturellement dans mon univers informatique fondĂ© autant que possible sur Linux et les logiciels libres. Au-delĂ du logiciel lui-mĂȘme, je privilĂ©gie lorsque c'est possible : * les outils ouverts ; * les formats documentĂ©s ; * les solutions interopĂ©rables ; * les donnĂ©es que je peux rĂ©cupĂ©rer ; * les logiciels que je peux installer et administrer moi-mĂȘme. Le but n'est pas de rechercher une puretĂ© technologique. Le but est de conserver le choix et la comprĂ©hension. ===== đ± Mon parcours MySQL ===== MySQL accompagne plusieurs de mes projets personnels. Certaines bases sont trĂšs simples. D'autres deviennent plus complexes au fur et Ă mesure que le projet grandit. Chaque expĂ©rience permet d'apprendre quelque chose : * modĂ©liser des donnĂ©es ; * comprendre les relations ; * Ă©crire de meilleures requĂȘtes ; * amĂ©liorer les performances ; * renforcer la sĂ©curitĂ© ; * automatiser certaines opĂ©rations ; * organiser plus proprement un projet. Les anciennes bases peuvent Ă©galement devenir des terrains d'amĂ©lioration. Un code ancien n'est pas forcĂ©ment inutile. Une ancienne structure peut ĂȘtre Ă©tudiĂ©e, comprise, puis progressivement modernisĂ©e. ===== đ§ MySQL comme exercice de simplicitĂ© ===== Une base de donnĂ©es peut rapidement devenir complexe. Mais son rĂŽle fondamental reste Ă©tonnamment simple : mettre de l'ordre dans des informations afin de pouvoir les retrouver lorsque l'on en a besoin. C'est peut-ĂȘtre lĂ que se trouve l'intĂ©rĂȘt de MySQL dans une dĂ©marche Ermite Zen. Organiser sans compliquer. Stocker sans accumuler inutilement. Comprendre avant d'ajouter. AmĂ©liorer sans tout reconstruire. Et conserver suffisamment de simplicitĂ© pour pouvoir revenir sur son propre travail plusieurs annĂ©es plus tard. ===== Mon espace MySQL Ă©volue ===== Ce wiki conserve mes notes, mes essais, mes solutions et mes dĂ©couvertes. Certaines pages seront amĂ©liorĂ©es. Certaines requĂȘtes seront remplacĂ©es. Certaines techniques deviendront obsolĂštes. C'est normal. Le but n'est pas de produire une documentation parfaite. C'est de garder une trace utile de ce que j'apprends et de ce que j'expĂ©rimente. Comprendre. Organiser. ExpĂ©rimenter. Simplifier. AmĂ©liorer. S'identifier