Créer une base de données MySQL et une table dans la base

Nous savons désormais nous connecter au serveur de différentes manières, il est donc maintenant temps d’apprendre à manipuler nos bases de données à proprement parler.

Pour cela, nous allons déjà devoir créer une base de données et des tables.

Dans cette leçon, je vous propose donc de voir comment créer une base de données et des tables avec PDO ou directement avec phpMyAdmin.

 

Création d’une base de données en utilisant PDO

Nous allons pouvoir créer une nouvelle base de données avec PDO en PHP en utilisant la requête SQL CREATE DATABASE suivie du nom que l’on souhaite donner à notre base de données.

Note : A partir de maintenant, nous allons commencer à découvrir et à utiliser le langage SQL. Comme nous l’avons expliqué précédemment, nous allons envoyer nos requêtes SQL via PDO en PHP.

Pour exécuter une requête SQL en PDO, nous allons devoir utiliser la méthode exec() qui va prendre en paramètre une requête SQL.

Voyons immédiatement le code de création d’une base de données qu’on appelle « pdodb ».

<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP / MySQL</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="cours.css">
    </head>
    <body>
        <h1>Bases de données MySQL</h1>  
        <?php
            $servername = 'localhost';
            $username = 'root';
            $password = 'root';
            
            try{
                $dbco = new PDO("mysql:host=$servername", $username, $password);
                $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                
                $sql = "CREATE DATABASE pdodb";
                $dbco->exec($sql);
                
                echo 'Base de données créée bien créée !';
            }
            
            catch(PDOException $e){
              echo "Erreur : " . $e->getMessage();
            }
        ?>
    </body>
</html>

 

On commence déjà par se connecter au serveur. Notez ici qu’on ne précise plus de nom de bases de données puisque nous allons la créer explicitement dans la suite du script. Bien évidemment, nous prenons toujours en charge les erreurs et exceptions.

Ensuite, nous écrivons notre requête SQL que nous enfermons dans une variable pour une plus grande liberté d’utilisation par la suite. Notez qu’on aurait aussi bien pu placer la requête directement en argument de exec(). Par convention, nous écrirons toujours nos requêtes SQL en majuscule pour bien les séparer du reste du code.

On utilise donc enfin notre méthode exec() (méthode qui appartient bien évidemment à notre classe PDO) et on lui passe la variable contenant notre requête SQL en argument.

La méthode exec() va se charger d’exécuter notre requête et de créer la base de données « pdodb ».

Exemple de script de connexion et de création d'une base de données MySQL avec PDO PHP

Vous pouvez aller vérifier dans votre phpMyAdmin, la nouvelle base de données a bien été créée.

On vérifie dans phpmyadmin que notre base mysql ait bien été créée avec pdo en php

 

Création d’une table en utilisant MySQL et PDO

Une base de données est constituée de tables. Les tables sont les « casiers » dans lesquelles nous allons stocker nos données. Mais avant de pouvoir stocker des données, il va déjà falloir apprendre à créer des tables dans notre base de données !

Pour créer une nouvelle table dans une base de données, nous allons utiliser la requête SQL CREATE TABLE suivie du nom que l’on souhaite donner à notre table et nous allons également pouvoir préciser entre parenthèse le nom des colonnes de notre table ainsi que le type de données qui doit être stocké dans chaque colonne.

Le MySQL nous offre beaucoup de choix de types de données différent nous permettant de créer des tables de manière vraiment précise. Pour le moment, vous pouvez retenir qu’il existe quatre grands types de données principaux en MySQL : les données de type texte, les données de type nombre, les données de type date et les données de type spacial. Vous pouvez retrouver la liste complète des types de valeur en fin de section, dans l’annexe dédiée.

Les sous types de valeurs les plus courants et les plus utilisés sont :

  • INT : accepte un nombre entier de 4 octets. La fourchette pour les entiers relatifs est [-2 147 483 648, 2 147 483 647], celle pour les entiers positifs est [0, 4 294 967 295] ;
  • VARCHAR : accepte une chaine de longueur variable (entre 0 et 65 535 caractères). La longueur effective réelle de la chaine dépend de la taille maximum d’une ligne ;
  • TEXT : accepte une chaine de caractère d’une longueur maximum de 65 535 caractères ;
  • DATE : accepte une date se situant entre le 1er janvier de l’an 1000 et le 31 décembre de l’an 9999.

En plus de cela, nous allons également pouvoir spécifier des attributs ou contraintes pour chacune des colonnes de notre table. Ces attributs ou contraintes vont venir apporter des contraintes supplémentaires sur les données attendues (non nulle, etc.) ou vont définir des comportements.

Voici les attributs qu’on va pouvoir ajouter à nos colonnes durant la création de notre table :

  • NOT NULL – Signifie que chaque entrée doit contenir une valeur pour cette colonne. La valeur null n’est pas acceptée ;
  • UNIQUE – Chacune des valeurs dans la colonne doit être unique (est utile par exemple lorsqu’on reçoit des adresses mail, cela évite qu’un utilisateur s’inscrive deux fois sur notre site entre autres) ;
  • PRIMARY KEY – Est utilisé pour identifier de manière unique chaque nouvelle entrée dans une table. C’est une combinaison de NOT NULL et de UNIQUE. PRIMARY KEY ne doit s’appliquer qu’à une colonne dans une table mais chaque table doit obligatoirement posséder une colonne avec une PRIMARY KEY. La colonne avec PRIMARY KEY est souvent une colonne d’ID (nombres) qui s’auto-incrémentent ;
  • FOREIGN KEY – Utilisée pour empêcher des actions qui pourraient détruire les liens entre des tables. La FOREIGN KEY sert à identifier une colonne qui est identique à une colonne portant une PRIMARY KEY dans une autre table ;
  • CHECK – Sert à s’assurer que toutes les valeurs dans une colonne satisfont à une certaine condition ou se trouve dans un certain intervalle spécifié ;
  • DEFAULT value – Sert à définir une valeur par défaut qui va être renseignée si aucune valeur n’est fournie ;
  • AUTO_INCREMENT – MySQL va automatiquement incrémenter (c’est-à-dire ajouter 1) au champ pour chaque nouvelle entrée ;
  • UNSIGNED – Utilisé pour les données de type nombre, cette contrainte permet de limiter les données reçues aux nombres positifs (0 inclus).

Voyons immédiatement en pratique comment on pourrait créer une table « Clients » dans notre base « pdodb ».

Notre table va contenir 9 colonnes :

  • Id
  • Nom
  • Prenom
  • Adresse
  • Ville
  • CodePostal
  • Pays
  • Mail
  • DateInscription
<!DOCTYPE html>
<html>
    <head>
        <title>Cours PHP / MySQL</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="cours.css">
    </head>
    <body>
        <h1>Bases de données MySQL</h1>  
        <?php
            $servname = 'localhost';
            $dbname = 'pdodb';
            $user = 'root';
            $pass = 'root';
            
            try{
                $dbco = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass);
                $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                
                $sql = "CREATE TABLE Clients(
                        Id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
                        Nom VARCHAR(30) NOT NULL,
                        Prenom VARCHAR(30) NOT NULL,
                        Adresse VARCHAR(70) NOT NULL,
                        Ville VARCHAR(30) NOT NULL,
                        Codepostal INT UNSIGNED NOT NULL,
                        Pays VARCHAR(30) NOT NULL,
                        Mail VARCHAR(50) NOT NULL,
                        DateInscription TIMESTAMP,
                        UNIQUE(Mail))";
                
                $dbco->exec($sql);
                echo 'Table bien créée !';
            }
            
            catch(PDOException $e){
              echo "Erreur : " . $e->getMessage();
            }
        ?>
    </body>
</html>

 

Exemple de script de création de tables dans une base de données avec pdo en php

Ici, nous créons donc la table « Clients » en utilisant la requête SQL CREATE TABLE Clients. Entre les parenthèses, nous précisons les colonnes que doit contenir la table en indiquant déjà le type de données attendues et les contraintes relatives à chaque colonne et en définissant l’une de nos colonnes comme PRIMARY KEY.

La syntaxe du SQL nous impose de séparer la déclaration de chaque colonne par une virgule.

Les chiffres entre parenthèses après les VARCHAR sont facultatifs : ils permettent juste d’indiquer le maximum de caractère que la colonne peut accepter pour une valeur. Indiquer cela permet d’optimiser très marginalement la table mais est surtout considéré comme une bonne pratique.

Le type de valeur TIMESTAMP signifie que la date courante sera stockée lors de chaque nouvelle entrée dans la table.

Finalement, vous pouvez remarquer qu’on ajoute une contrainte UNIQUE pour notre colonne Mail de manière un peu différente du reste. C’est l’écriture conseillée en SQL.

Vous pouvez vérifier dans phpMyAdmin que la table a bien été créée avec ses colonnes en cliquant sur le nom de la table dans notre base de données puis en cliquant sur « Structure » :

On vérifie dans phpmyadmin que les tables de notre base ont bien été créées avec pdo en php

 

Création d’une BDD et d’une table avec phpMyAdmin

Il va être très facile de créer une base de données et une table avec l’outil phpMyAdmin. Cependant, encore une fois, la limite est que nous devons faire cela « manuellement » et non pas dynamiquement.

Pour cela, rendez-vous sur la page d’accueil de phpMyAdmin. A partir de là, vous pouvez soit cliquer sur « Nouvelle base de données » dans la colonne de gauche, soit sur l’onglet « Bases de données en haut ».

Création d'une base de données mysql avec phpmyadmin

Une fois arrivé ici, renseignez le nom de la base de données que vous souhaitez créer (on peut par exemple l’appeler « pdodb2 ») et cliquez sur « créer ».

Création d'une base de données mysql avec phpmyadmin 2

phpMyAdmin crée la table et vous amène sur une page vous permettant déjà de créer une première table. Vous pouvez revenir sur cette même page en cliquant sur le nom de la base de données créée dans la liste des bases à gauche de votre page.

Créons donc à nouveau une table « Clients » avec cette fois-ci simplement 4 colonnes pour aller plus vite.

Création d'une table mysql avec phpmyadmin

A partir de là, on vous propose de définir les colonnes de la table. Notre première colonne va se nommer Id, acceptant des données de type INT, UNSIGNED, PRIMARY KEY et AUTO_INCREMENT. Notre deuxième colonne est une colonne Nom, acceptant des données de type VARCHAR(30) et NOT NULL. Idem pour notre troisième colonne Prenom et finalement notre dernière colonne contient les dates d’inscription de nos clients.

Création de la structure d'une table mysql avec phpmyadmin

Notez que dans phpMyAdmin, il suffit de ne pas cocher la case « Null » pour que notre colonne possède la contrainte NOT NULL.

Nous n’avons plus qu’à cliquer sur « Sauvegarder » afin que notre table et nos colonnes soient définitivement créées.

Notre table et ses colonnes ont bien été créées avec phpmyadmin

Laisser un commentaire