Tutoriel Initiation aux bases de données : Comprendre le fonctionnement et se lancer [SQL] (Mysql/phpMyAdmin)

Discussion dans 'Tutoriels serveur' créé par DiscowZombie, 20 Septembre 2017.

?

Qu'avez-vous pensez de cette initiation ?

  1. Très bien et plutôt clair.

    5 vote(s)
    62.5%
  2. Utile.

    2 vote(s)
    25.0%
  3. Trop vague (préciser en réponse !).

    0 vote(s)
    0.0%
  4. Je n'ai rien compris.

    1 vote(s)
    12.5%
  1. DiscowZombie

    DiscowZombie Dev passionné
    Staff Modérateur Support

    Inscrit:
    2 Mars 2017
    Messages:
    2 187
    J'aime reçus:
    713
    Temps de lecture : 10 à 15 minutes environ (il ne faut pas hésiter à passer plus de temps et à relire si vous ne comprenez pas tout de suite)
    Difficulté : Facile/Intermédiaire


    Prérequis :
    • Compréhension minimale de l'informatique ;
    • Connaissances minimales en anglais ;
    • Savoir cliquer sur le bouton « J'aime » si le tutoriel vous a plu (après la lecture) ;


    Bonjour, Bonsoir, à tous,

    aujourd'hui on se retrouve pour une initiation aux bases de données. En effet, que vous soyez simplement un bidouilleur, un administrateur ou développeur, vous n'avez pas pu passer à côté de cette solution de stockage puissant ! Les bases de données sont massivement utilisé, notamment dans l'univers du web, nous allons voir pourquoi et comment nous aussi en tirer avantage !


    Présentation – Les bases de données

    Les bases de données (BDD) sont une puissante solution de stockage de données. Cette solution possède de nombreux avantages par rapport à un stockage en fichier, notamment dû au fait qu'elle fonctionne avec un serveur ; vous pouvez donc l'installer sur une machine et interagir facilement avec elle depuis l'extérieur grâce à un système de requêtes. Un autre avantage de cette solution est son endurance : en effet, une base de données est capable de stocker des quantités gigantesques de données (certaines font plusieurs dizaines de Giga!). Un dernièr avantage considérable des bases de données est dû à leur structure : elles sont triés et rangés selon des schémas puis des tables, qui sont elles-mêmes découper en colonnes. Tout ceci permet une rapidité de recherche et de sélection (là où vous auriez besoin de vérifier chaque ligne d'un fichier json).

    Pour dialoguer avec notre base de données, nous aurons besoin d'un serveur ; ce dernier sera nommé Système de Gestion de Base de Données (SGBD). C'est lui qui va s'assurer d’interpréter nos requêtes et de nous répondre en conséquence. Il faut savoir qu'il n'existe pas qu'un seul SGBD mais plusieurs dizaines, l'historique étant Mysql mais on peut également mentionner MongoDB, MariaDB, PostgreSQL ou encore Microsoft SQL Server. Chaque SGBD va embarquer ses avantages et inconvénients, mais, en définitive, ils font tous le même travail : nous permettre de communiquer avec notre base de données. Il faut savoir que les requêtes peuvent varier en fonction de votre SGBD mais ici cela ne nous posera aucun souci car celles utilisées dans ce tutoriel seront extrêmement simples !

    Pour ce tutoriel, j'ai décidé d'utiliser le SGBD Mysql principalement car c'est le plus simple à prendre en main pour un débutant. Cependant, il faudra bien garder en tête que Mysql est assez ancien et n'est certainement pas adapté à un usage plus intense que des tests ou une petite quantité de données. Si vous souhaitez un SGBD proche de Mysql mais plus utilisable, je vous conseille de regarder du côté de MariaDB.

    Les requêtes sont des petits bouts de code qui vont vous permettre de dialoguer avec votre SGBD. Dans le cas de bases de données, elles sont écrits en langage SQL (a).

    Ces requêtes sont universelles (ne dépendent pas de votre langue) et sont donc en anglais. Rassurez-vous, nulle nécessité d'avoir un niveau incroyable en anglais, des connaissances de base sont largement suffisantes car nous utiliserons des mots courts et simples ; c'est là le but d'une requêtes. Si vous ne comprenez rien à l'anglais et que vous ne souhaitez pas apprendre les requête, pas d'inquiétude, un super outil existe pour vous, j'en parle dans la suite du tutoriel !

    Avant de continuer, il est important que vous ayez bien compris l'organisation et la logique d'une base de données, voici donc un schéma pour que tout soit bien clair !

    [​IMG]


    Utilisation des bases de données : Un exemple concret avec Mysql

    Pour ce tutoriel, j'ai donc installé Mysql sur un petit Serveur Privé Virtuel (VPS) sous Linux. Maintenant, nous allons devoir nous y connecter.

    Pour ce faire, je me connecte d'abord à ma machine puis je m'assure que le service mysql est bien démarré (normalement, pas de problème!). Ensuite, je tape la commande :
    Code:
    mysql -p
    Ceci va se connecter avec l'utilisateur root (utilisateur par défaut) et en me demandant mon mot de passe. Lorsque j'ai entré mon mot de passe (défini à l'installation de mysql), je suis connecté.
    [​IMG]

    Nous sommes en SSH, l'interface n'est donc pas des plus « user friendly » si vous n'êtes pas habitué mais ça fera très bien l'affaire ! Je vais donc maintenant créer un nouveau schéma (on peut également dire « base de données ») avec la commande suivante :
    Code:
    CREATE DATABASE test;
    [​IMG]

    Si vous obtenez la même réponse que moi, c'est que tout s'est bien passé. Pour en être sûr, vous pouvez exécuter cette commande et vous assurez de bien voir votre base de données dans la liste :
    Code:
    SHOW DATABASES;
    [​IMG]

    Vous vous apercevez sûrement que certaines bases de données existent déjà alors que vous ne les avez pas créé, c'est normal, elles existent par défaut et son utilisé par Mysql, vous n'avez pas à y toucher !

    Maintenant, nous allons rentrer dans notre base de données. Pour ce faire, c'est relativement simple et ça se fait avec use :
    Code:
    use test;
    [​IMG]

    Pour voir toutes les tables présentes dans cette base de données, il faut utiliser SHOW :
    Code:
    SHOW TABLES;
    [​IMG]

    Note :
    Vous vous rendez compte que les commandes sont quand même assez intuitives si vous maîtrisez l'anglais, ce qui est plutôt pratique.


    Nous n'allons pas créer de table dans ce tutoriel pour éviter de trop vous embrouiller avec les commandes, et, en plus, ce n'est pas le but. Cependant, il nous reste une dernière chose à voir, c'est interagir avec notre SGBD depuis un panel ; pour ceux qui ne veulent pas se compliquer avec les requêtes ou qui n'aiment pas le SSH. Cependant, nous allons d'abord nous déconnecter de Mysql, ce qui se fait avec la commande quit :
    Code:
    quit;

    Interagir avec notre base de données grâce à Phpmyadmin
    phpMyAdmin est un panel web qui permet de communiquer avec Mysql. Grâce à lui, vous pourrez avoir un retour visuel plus propre qu'en SSH et faire des requêtes simplement, en quelques cliques et sans rien connaître ! Lorsque vous avez installé phpMyAdmin, vous pouvez y accéder depuis un navigateur web : http://ip_de_la_machine/phpmyadmin par défaut. Ensuite, il faut se connecter, comme en SSH. Une fois connecter, vous arrivez sur la fameuse interface de phpMyAdmin. Vous avez donc fait un saut dans le temps, vous êtes maintenant en 1980 !

    Une liste de vos bases de données s'affiche à gauche, plus besoin de faire de commandes ! (youpiii diront certains)

    [​IMG]

    Grâce à phpMyAdmin, vous pouvez facilement créer des bases de données, ou même lire les contenus des tables. Voici par exemple ma table utilisateurs (dans la base de données test créé auparavant). Comme vous pouvez le voir, cette table contient deux utilisateurs.

    [​IMG]


    Nous en avons assez vu pour une première initiation aux bases de données, en espérant vous avoir éclairées et donner envie d'utiliser ces bases de données ! Je vous mets tous les liens que j'ai cités juste en dessous ! Surtout, si vous avez encore des zones d'ombre ou des questions, n’hésitez pas à demander juste en dessous ou donner vos retours !

    À bientôt dans un prochain tutoriel !
    Mathéo C.


    Les sites évoqués :

    Notes :
    (a) Il existe également des bases de données « no-sql » qui ont un fonctionnement proche mais n'utilise pas le langage sql. Ces dernières ne sont pas traitées dans ce tutoriel, j'ai préféré me concentrer sur les bases de données sql.
     
    #1 DiscowZombie, 20 Septembre 2017
    Dernière édition: 2 Juin 2018
  2. Detobel36

    Detobel36 Créateur de plugins (PhoenixRebirth)
    Support

    Inscrit:
    17 Août 2012
    Messages:
    8 624
    J'aime reçus:
    1 820
    Salut,

    Ajouté au sommaire des tutoriels ;)


    Cordialement,
    Detobel36
     
    Elikill et DiscowZombie aiment ça.
  3. Oskar Ardolo

    Oskar Ardolo J'touche du fer quand vient la foudre
    Ancien

    Inscrit:
    8 Septembre 2012
    Messages:
    2 466
    J'aime reçus:
    703
    MySQL faut arrêter avec ça un jour, ça commence à vieillir et puer du cul un peu. Faut regarder ce qu'il se fait du côté du NoSQL aussi :p.
     
  4. Neph

    Neph Cyberchenapan

    Inscrit:
    15 Mai 2016
    Messages:
    392
    J'aime reçus:
    165
    Raconter n'importe quoi, faut arrêter avec ça un jour. C'était hier vendredi.
    Edit: mais si t'as des arguments en faveur de "nosql", je les veux bien. Cependant, je doute que tu saches de quoi tu parles pour sortir ça, jeter mysql et le remplacer par.. un terme +- flou.
     
    #4 Neph, 7 Octobre 2017
    Dernière édition: 7 Octobre 2017
  5. Aang23

    Aang23 = 157

    Inscrit:
    16 Mai 2017
    Messages:
    171
    J'aime reçus:
    14
    MySQL date, comme Linux, pourtant Linux, n'a pas du tout vieillit, même au contraire. MySQL est dans le même cas... Ce n'est pas parce que le nom est "vieux" que le software derrière l'est. Pour avoir essayé NoSQL je peux le confirmer.
     
  6. DiscowZombie

    DiscowZombie Dev passionné
    Staff Modérateur Support

    Inscrit:
    2 Mars 2017
    Messages:
    2 187
    J'aime reçus:
    713
    Salut,

    j'ai du mal à te laisser dire ça ! MySQL est une catastrophe que ce soit au niveau de l'optimisation où des requêtes ! Il suffit de le mettre un peu à l'épreuve pour voir que ça pêche ! Je t'invite à le comparer aux autres SGBD Sql et te rendre compte que ce n'est absolument pas possible de l'utiliser à partir du moment ou tu as un peu de volume ! Cependant, il existe d'autres SGBD Sql qui sont encore très performants !

    Au niveau du NoSQL, il y a de très bonnes technos style Redis qui fonctionnement parfaitement et qui elles sont bien plus fiables ! ;)

    De plus, il faut bien garder en tête que le SQL et le NoSQL ne sont pas adaptés pour les mêmes besoins ; généralement on préférera stocker des données volatiles sur du NoSQL et des données plus "sérieuses" sur du SQL.


    PS: Juste une petite note car on va me demander pourquoi faire un tuto sur MySQL pour dire que c'est une catastrophe deux messages plus bas. Tout d'abord on ne peut pas ignorer que MySQL est le premier SGBD et je pense qu'il était important d'avoir une première approche SQL sur ce SGBD même si je ne recommande pas son usage pour des projets avec un peu de volume ! De plus, les requêtes des autres SGBD sont grandement basés sur celles MySQL, d’où l'importance d'avoir compris la syntaxe. ;)
     
    Oskar Ardolo apprécie ceci.
  7. Aang23

    Aang23 = 157

    Inscrit:
    16 Mai 2017
    Messages:
    171
    J'aime reçus:
    14
    C'est vrai, mais en cherchant un peu il existe quelques variantes plus fiables et optimisées.
    Oui le NoSQL posséde quelques avantages, mais ce n'est pas le mieux, pour l'instant ce ne serait pas mon 1er choix. Après il y aurrait vraiment besoin d'une DB fiable, bien optimisée, etc. Quelques projets prometteurs existent.
     
    #7 Aang23, 21 Février 2018
    Dernière édition: 21 Février 2018
  8. Detobel36

    Detobel36 Créateur de plugins (PhoenixRebirth)
    Support

    Inscrit:
    17 Août 2012
    Messages:
    8 624
    J'aime reçus:
    1 820
    Salut,

    C'est surtout que ça ne sert pas à la même chose...
    Les SQL Like ont encore leur place (MariaDB, PostgreSQL, ...). Ce n'est pas pour rien que ces bases de données sont encore mis à jour et continue à être utilisées.
    Le but du NoSQL n'est pas de remplacé le SQL mais bien d'apporter quelque chose de nouveau, d'optimisé (pour certaines choses). Il faut avoir une raison pour changer de technologie.

    Si on prend redis, on se rend compte qu'il n'est pas du tout fait pour du relationnel (même s'il est possible de le simuler). Mais par contre il est très bien pour un déploiement "réseau" ou avec une "hiérarchie".
    Si on prend ElasticSearch ou MongoDB, on se rend compte que le but de ces bases de données est de stocker différentes données que les bases de données SQL. En effet, ces deux bases de données NoSQL sont faites pour stocker des documents et faire de la recherche de texte. Cela peut, par exemple être très pratique pour stocker des logs.

    Il y a toujours un point négatif et un point positif... Le choix n'est pas binaire.

    Et non @Aang23 le NoSQL n'en est pas à ses balbutiements. Sache que de nombreuses entreprise travail avec du NoSQL et que ces bases de données ont déjà fait leurs preuves ;)


    Cordialement,
    Detobel36
     
    Neph et DiscowZombie aiment ça.
  9. Aang23

    Aang23 = 157

    Inscrit:
    16 Mai 2017
    Messages:
    171
    J'aime reçus:
    14
    Je viens de lire un article à jour sur le sujet et je rejoinds ton avis sur le sujet. N'ayant pas vraiment la nécéssité de travailler avec des DB je n'était pas vraiment à jour sur ça.
    Après même si le choix n'est pas binaire la "référence" est toujours MySQL...
    Tout de même merci !
     
  10. DiscowZombie

    DiscowZombie Dev passionné
    Staff Modérateur Support

    Inscrit:
    2 Mars 2017
    Messages:
    2 187
    J'aime reçus:
    713
    Re,

    tu m'as fait une transition parfaite donc j'en profite ! xD Malheureusement trop de projets utilisent encore MySQL alors que ce n'est absolument pas adaptés à leurs besoins. Pour Minecraft ça passe, mais pour des forums (style xenforo) ou des CMS ça ne passe plus... La référence peut-etre mais il serait temps de l'oublier à mon avis... Après c'est une habitude difficile à chasser, d'autant plus que les hébergeurs n'y mettent pas du leur et ne proposent très souvent que ça ! ^^
     

Partager cette page