Vous n’avez jamais utilisé MySQL auparavant ? Commencez ici ! Cet article va vous guider à travers les principes mêmes des bases de données MySQL et SQL. Apprenez à installer MySQL, comment effectuer des transactions, et comment créer et utiliser des bases de données.
Introduction
Une base de données est une partie essentielle de la plupart des sites et des blogs, mais la mise en œuvre et l’utilisation d’une base de données peut être une tâche ardue pour un développeur Web débutant.
Dans ce tutoriel, vous allez apprendre comment installer, configurer et utiliser une base de données MySQL sur votre ordinateur. Cela vous donnera une bonne base sur le langage MySQL qui vous sera utile lorsque vous commencerez à développer vos propres bases de données sur des sites Web dynamiques en utilisant PHP, Ruby, ou le langage de votre choix.
Prêt à commencer à explorer MySQL ? Allons-y !
Qu’est-ce qu’une base de données ?
Une base de données est une collection structurée de données. Voici quelques exemples typiques de bases de données :
- Une base de données d’une boutique en ligne qui stocke les produits, les coordonnées du client et les commandes
- Une base de données pour un forum sur Internet qui stocke les membres, les forums, les sujets et les messages
- Une base de données pour un système de blog, comme WordPress, qui stocke les utilisateurs, les articles, les catégories, les tags et les commentaires
Le système qui gère des bases de données est connu comme un Système de Gestion de Base de Données, ou SGBD. MySQL est un exemple d’un SGBD. Pouvant généralement prêter à confusion, les SGBD sont souvent et maladroitement appelés « bases de données » aussi. Cependant, strictement parlant la base de données est la donnée elle-même, tandis que le SGBD est le logiciel qui fonctionne avec la base de données.
Il existe une multitude de manière différente d’organiser les données dans une base de données, connue sous le nom de modèle de bases de données. Un des plus populaire est le modèle relationnel, que MySQL, en autre, utilise. En conséquence, MySQL est connu comme un Système de Gestion de Bases de Données Relationnelles, ou SGBDR.
Le schéma ci-dessous montre comment une base de données, le SGBD, et le code de votre site interagissent les uns avec les autres.
Pourquoi utiliser une base de données ?
Si vous n’avez pas utilisé une base de données pour votre site, il est possible que vous ayez des données stockées dans des fichiers texte tels que CSV (Comma Separated Value, en anglais). Voici un exemple de fichier :
identifiant, mot de passe, mail, prenom, nom
"johndoe", "1234", "[email protected]", "John", "Doe"
"henrymichel", "5678", "[email protected]", "Henry", "Michel"
Les bases de données relationnelles sont conçues pour éviter tous ces problèmes. Voici quelques raisons d’utiliser une base de données plutôt que des fichiers texte :
- Elles sont rapides : Les bases de données utilisent des
index
, des clés (keys
), afin de trouver des enregistrements extrêmement rapidement. Par exemple, après avoir ajouté une clé pour le champmail
, vous pouvez récupérer un enregistrement sur un membre basé sur son adresse mail quasiment instantanément, peu importe combien de millions de membres vous pouvez avoir dans votre base de données - Elles sont fiables : Un SGBD garantit que les données dans la base soient lues et écrites de manière fiable, sans corrompre celles-ci. Beaucoup de SGBD vous permettent d’utiliser des techniques comme le verrouillage et des transactions pour s’assurer que les enregistrements soient insérés et mis à jour correctement
- Elles vous permettent de relier les enregistrements ensemble : Les bases de données relationnelles vous permettent de stocker différents types de données dans des groupes connus comme des tables (
table
). Vous pouvez ensuite lier ensemble les données à travers les tables. Par exemple, vous pouvez créer un client dans une table et une commande dans une autre, puis relier un enregistrement client à tous les enregistrements de commande associés au client. La possibilité de relier les enregistrements à travers les tables vous permet notamment de créer des bases de données complexes avec de nombreux et différents types de données liés.
Pourquoi utiliser MySQL ?
Vous savez maintenant pourquoi les bases de données sont utiles, et comment elles peuvent vous aider à construire des sites Web et applications Web complexes. Mais pourquoi utiliser MySQL en particulier ?
Il existe de nombreux et connus SGBD : MySQL, PostgreSQL, SQLite, Oracle et SQL Server, et chacun d’eux peuvent être utilisés pour vous aider dans le développement Web.
Cela dit, MySQL dispose de quelques avantages pour les développeurs Web par rapport à certains autres systèmes :
- Il est open source, ce qui signifie qu’il est gratuit et que tout le monde peut l’utiliser et le modifier
- Il est largement déployé : MySQL peut être installé sur de multiples et différentes plateformes, et il est habituellement un standard sur la plupart des configurations d’hébergement Web
- Il est facile à utiliser : Mettre en place et travailler avec des bases de données MySQL est relativement simple
- Il fonctionne bien avec PHP : Depuis la version 5.3, PHP dispose d’un driver MySQL, qui est étroitement lié avec le moteur PHP, ce qui en fait un bon choix pour les codeurs PHP
Note : Chaque SGBD a ses propres forces et faiblesses. Par exemple, PostgreSQL est également open source, très stable et a une grande communauté derrière lui. SQLite est extrêmement rapide et autonome (et est également gratuit), tandis que Oracle et SQL Server ont beaucoup de fonctionnalités de niveau entreprise qui en font un bon choix pour les grandes organisations
Installez MySQL
Comme je l’ai mentionné plus haut, la plupart des hébergements Web en ligne sont livrés avec MySQL de pré-installé. Toutefois, si vous développez des sites Web en utilisant MySQL, vous voulez certainement qu’un serveur MySQL tourne sur votre propre ordinateur afin que vous puissiez créer et tester vos bases de données et le code sans avoir à télécharger constamment les fichiers vers votre serveur en ligne.
Il y a deux composantes principales de MySQL :
- Le serveur mysql (
mysqld
) : Ce dernier est le SGBD MySQL effectuant tout le travail sur la gestion de vos bases de données. Il fonctionne tout le temps en arrière-plan, acceptant les connexions à partir des programmes clients, les scripts Web, … - Divers clients et commandes utilitaires : Il s’agit notamment de la ligne de commande
mysql
que vous allez l’utiliser plus tard dans le tutoriel afin d’exécuter des commandes sur le serveur. Vous trouverez également des commandes commemysqladmin
servant à administrer des bases de données MySQL, etmysqldump
pour exporter et de sauvegarder des bases de données
Note : En outre, beaucoup d’installeurs MySQL incluent la documentation, des fichiers d’en-tête pour les développeurs, et une suite de tests MySQL
Il y a plusieurs façons d’installer un serveur MySQL et les programmes associés. Voici trois manières de les utiliser :
- En utilisant un package d’installation officiel de MySQL. Il existe des packages pour de nombreux systèmes d’exploitation : Windows, Mac OS X et Linux. La procédure de base consiste à télécharger le fichier, l’extraire, et lancer l’installateur. Consultez la documentation pour visualiser les différentes étapes d’installation
- En utilisant un gestionnaire de paquets Linux. Beaucoup de distributions Linux sont livrées avec un gestionnaire de paquets, qui vous permet de facilement installer MySQL, avec PHP, Apache et d’autres logiciels de développement Web. Consultez la documentation de votre distribution pour plus de détails
- Enfin, l’installation d’un package complet : LAMP, WAMP et MAMP. C’est sans doute la façon la plus simple d’installer une configuration de développement complète basée sur MySQL sur votre ordinateur. Ces paquets contiennent tout ce qu’il faut pour commencer, que ce soit le serveur Web Apache, MySQL et PHP/Perl, d’où l’acronyme « AMP ». (Le « L », « W » et « M » sont les initiales respectives de Linux, Windows et Mac OS X). Puisque tout est installé en une seule fois, vous aurez Apache, MySQL et PHP/Perl instantanément fonctionnels, avec peu ou aucune autre configuration requise
Si vous voulez avoir rapidement un système fiable, robuste et fonctionnel dès son installation, je vous recommande personnellement de télécharger et d’installer XAMPP. Ce package LAMP/WAMP/MAMP est disponible sur les environnements Linux, Windows, Mac OS X et Solaris. Son installation configure automatiquement Apache, MySQL, PHP et Perl sur votre ordinateur. Qui plus est, il est facile de tout désinstaller plus tard si vous le souhaitez.
Pour installer XAMPP il vous suffit d’aller sur la page d’accueil du site, et cliquez sur le lien correspondant à votre système d’exploitation (Linux, Windows, Mac OS X ou Solaris). Ensuite, suivez les étapes sur la page, afin de télécharger, installer, démarrer et tester XAMPP sur votre ordinateur.
Note : D’autres packages populaires semblables à XAMPP comprennent WampServer et EasyPHP pour Windows, et MAMP pour Mac OS X.
MySQL en ligne de commande
En supposant que vous avez maintenant installé et démarré votre serveur MySQL en utilisant l’une des techniques ci-dessus, comment voulez-vous interagir avec le serveur ? Lorsque vous avez installé votre serveur MySQL, vous avez également installé mysql
. Il s’agit d’une simple interface « ligne de commande », vous permettant de vous connecter au serveur et effectuer des requêtes.
Pour lancer mysql
voici les deux étapes à suivre :
- Ouvrez une fenêtre de terminal :
- Windows 7 : Cliquez sur le logo Windows, puis sélectionnez
Tous les Programmes > Accessoires > Invite de commandes
- Mac OS X : Ouvrez une fenêtre du Finder, puis choisissez
Applications > Utilitaires > Terminal
- Ubuntu : Choisissez
Applications > Accessoires > Terminal
- Windows 7 : Cliquez sur le logo Windows, puis sélectionnez
- Exécutez le service
mysql
dans la fenêtre du terminal :- Windows 7 : En supposant que vous avez installé XAMPP, tapez
cd c:\xampp\mysql\bin
et appuyez sur la touche « Entrée », puis tapezmysql -u root
et appuyez sur « Entrée » - Mac OS X et Ubuntu : Il suffit de taper
mysql -u root
et d’appuyer sur la touche « Entrée »
- Windows 7 : En supposant que vous avez installé XAMPP, tapez
Note : Le paramètre -u root
indique que le client mysql
utilisera l’utilisateur root
pour se connecter au serveur MySQL. Par défaut, l’utilisateur root
de MySQL n’a pas de mot de passe. Cela ne pose pas de problème pour un développement en local, mais pensez-y pour un serveur MySQL en production.
Une fois que le client mysql
est lancé, vous devriez avoir quelque-chose de semblable :
La dernière ligne, mysql>
, est l’invite MySQL. C’est là que vous tapez vos commandes à envoyer au serveur MySQL.
Essayons différentes commandes. Pour cela, tapez le code suivant dans le prompt mysql
, puis appuyez sur « Entrée » :
select now();
Maintenant, essayez une autre commande :
show databases;
Maintenant que vous savez comment exécuter des commandes sur votre serveur MySQL, vous êtes prêt à créer votre propre base de données et commencer à ajouter des données. Vous pourrez faire cela dans les sections suivantes.
Note : Lorsque vous avez terminé avec le client MySQL, vous pouvez le quitter en tapant exit
à l’invite de commande et appuyez sur « Entrée »
Création d’une base de données
Créons une base de données simple pour gérer une bibliothèque. Lors du prompt mysql>
, tapez la commande suivante et appuyez sur « Entrée » :
create database bibliotheque;
MySQL a maintenant créé votre base de données. Vous pouvez le vérifier en tapant de nouveau la commande show databases;
:
Félicitation, vous venez de créer votre première base de données MySQL !
Quelques bases SQL
Toutes les commandes que vous venez de taper, (select now()
, show databases
, et create database bibliotheque
), sont des instructions SQL. SQL ou Structured Query Language, est le langage que vous allez utiliser pour communiquer avec la plupart des SGBD, notamment MySQL.
L’utilisation de SQL, va vous permettre de créer et supprimer des bases de données, des tables, d’insérer de nouvelles données dans des tables, mettre à jour ces données, les supprimer et récupérer des données.
Les déclarations qui vont vous permettre de récupérer les données d’une base de données sont aussi communément appelées requêtes, d’où le nom « Structured Query Language ».
Vous allez utiliser le langage SQL dans le reste de ce tutoriel afin de créer une table dans votre nouvelle base de données, ajouter un enregistrement, et le récupérer.
Création d’une simple table
Comme avec toutes les bases de données relationnelles, MySQL organise ses données dans des tables. Une table contient un ou plusieurs enregistrements de données, liées d’une manière similaire à un tableau associatif en JavaScript ou PHP. Une table se compose de :
- Un ou plusieurs champs : Chaque champ contient un type spécifique. Par exemple, dans une table « livre », vous pourriez avoir un champ pour le titre du livre, un autre champ pour l’auteur, et ainsi de suite…
- Un ou plusieurs enregistrements : Un enregistrement est un ensemble de valeurs de champ qui stocke toutes les informations sur une entité particulière dans la table.
La meilleure façon de comprendre les champs et les enregistrements est de visualiser comment ils sont gérés dans une table. Mettons en place une table livre
que l’on va gérer dans notre bibliothèque :
id | titre | auteur | prix |
---|---|---|---|
1 | HTML5 pour les webdesigners | Jeremy Keith | 12 |
2 | Responsive Web design | Ethan Marcotte | 12 |
3 | CSS avancées | Raphaël Goetter | 38 |
4 | HTML5 | Rodolphe Rimelé | 39 |
La première ligne de la table contient les noms des champs : id
, titre
, auteur
, et prix
. Les trois lignes suivantes sont les trois enregistrements de nos livres dans notre table. Chaque enregistrement a ses propres valeurs : par exemple, le premier enregistrement à le champ titre
qui contient « HTML5 pour les webdesigners », tandis que le deuxième enregistrement à pour valeur « Responsive Web design ».
Depuis une table, les champs sont communément appelés « colonnes ». De même, les enregistrements d’une table sont communément appelés « lignes ».
Alors, comment faire pour créer cette table dans MySQL ? Pour ce faire, vous devez créer un schéma pour la table. Il s’agit d’un fichier texte contenant une série d’instructions SQL qui vont permettre de créer la table et définir les champs de celle-ci.
Voici le schéma :
USE bibliotheque;DROP TABLE IF EXISTS livres;
CREATE TABLE livres
(
id int unsigned NOT NULL auto_increment, # Identifiant unique
titre varchar(255) NOT NULL, # Titre du livre
auteur varchar(255) NOT NULL, # Auteur du livre
prix decimal(10,2) NOT NULL, # Prix du livrePRIMARY KEY (id)
);
USE bibliotheque
: Cette instruction indique à MySQL de choisir la base de données « bibliotheque » que vous avez créé plus tôt. MySQL va alors effectuer toutes les opérations sur celle-ciDROP TABLE IF EXISTS livre
: Ceci supprime toute précédente table de la base de données ayant pour nom « livre », puisque vous ne pouvez pas redéfinir une table si elle existe déjà. Note : Soyez prudent lorsque vous utilisezDROP TABLE
. Lorsque vous supprimez une table comme celle-ci, toutes les données de la table sont effacées pour toujours !CREATE TABLE books (...)
: Cette instruction créée une nouvelle table appelée « livre ». Toutes les choses écrites entre les parenthèses, définissent les champs de la table et sa clé primaire, comme nous allons le voir par la suiteid int unsigned NOT NULL auto_increment
: Le premier champ que nous définissons estid
. Il s’agit d’un type spécial de champ qui attribue un identifiant numérique unique à chaque enregistrement dans la table « livre ». Dans la pratique cet identifiant va vous permettre d’avoir un champ unique, de tel sorte que vous puissiez identifier facilement un enregistrement particulier. Le type du champ est unint unsigned
, il peut donc contenir de grands nombres entiers positifs. Nous ajoutons également l’attributauto_increment
, de telle sorte que maintenant, chaque fois que nous ajoutons un nouveau enregistrement à la table, MySQL va assigner automatiquement une nouvelle valeur unique dans le champid
(en commençant par 1)titre varchar(255) NOT NULL
: Ensuite, on définit le champtitre
qui correspond au titre de chaque livre. Le type est unvarchar(255)
, ce qui signifie qu’il peut contenir une chaîne de texte jusqu’à 255 caractèresauteur varchar(255) NOT NULL
: Le champ suivant est l’auteur du livre. Comme avec le titre, je lui donne le typevarchar(255)
prix decimal(10,2) NOT NULL
: Le dernier champ est le prix du livre. Le type de ce dernier est undecimal(10,2)
, ce qui signifie que le champ peut contenir un nombre décimal à 10 chiffres, avec 2 chiffres à droite de la virgulePRIMARY KEY (id)
: Enfin, nous créons une clé primaire basée sur le champid
. Une clé primaire identifie de manière unique les enregistrements de la table. Attention, chaque table peut avoir qu’une seule clé primaire. MySQL crée aussi un index à l’aide de la clé primaire, ce qui vous permet de récupérer un enregistrement extrêmement rapidement en référençant sonid
, même si la table contient des millions de lignes
Maintenant que nous avons créé notre schéma, nous avons besoin de les exécuter par MySQL. Pour ce faire, revenez à l’écran de MySQL et tapez la commande suivante :
source /repertoire/de/votre/fichier/livre.sql
/repertoire/de/votre/fichier/livre.sql
, le chemin complet vers votre fichier « livre.sql » (dans lequel vous aurez mis le contenu vu ci-dessus)Vous devriez voir la sortie suivante dans le terminal MySQL :
Pour vérifier que votre table livre
a bien été créée, on tape la commande show tables;
:
Vous pouvez même inspecter le schéma de la table pour s’assurer qu’il est correct. Pour ce faire, utilisez la commande explain
, comme ceci :
Ajout d’enregistrements
Vous avez maintenant créé une base de données appelée « bibliotheque », et ajouté une table « livres » au sein même de celle-ci. Désormais, essayons d’ajouter un enregistrement à la table livres
Pour ajouter un enregistrement à une table, nous allons utiliser la déclaration SQL INSERT
, en passant le nom des champs de la table et les valeurs. Tapez la ligne suivante dans votre client MySQL afin d’insérer l’enregistrement d’un livre dans votre table :
INSERT INTO livres ( titre, auteur, prix )
VALUES ( "HTML5 pour les webdesigners", "Jeremy Keith", 12 );
Comme vous le constaterez, nous avons utilisé l’instruction INSERT
afin d’ajouter le livre « HTML5 pour les webdesigners » à la table. Nous avons spécifié INTO livres
pour indiquer à MySQL, quelle table il doit utiliser pour insérer l’enregistrement.
Ensuite on a énuméré entre parenthèses les noms des champs dont nous voulons fournir des valeurs, suivi par le mot-clé VALUES
et par les valeurs des champs dans le même ordre qu’indiqué entre les parenthèses.
Notez que nous n’avons pas spécifié une valeur pour le champ ID
. Comme il s’agit d’un champ avec l’attribut auto_increment
, MySQL génère automatiquement la valeur du champ.
Ajoutons un autre triplet de livres sur la table :
INSERT INTO livres ( titre, auteur, prix )
VALUES ("Responsive Web design", "Ethan Marcotte", 12 ),
("CSS avancées", "Raphaël Goetter", 38 ),
("HTML5", "Rodolphe Rimelé", 39 );
Récupération des enregistrements
Maintenant que nous avons ajouté quelques enregistrements à la table, comment pouvons-nous les récupérer ? C’est là que la notion de « requêtes SQL » entre en jeu. La déclaration SQL SELECT
vous permet de récupérer un ou plusieurs enregistrements d’une table (ou même plusieurs tables à la fois) en fonction des critères que vous fournissez.
La syntaxe de base est la suivante :
SELECT nomChamps FROM nomTable [WHERE criteres]
SELECT
peut être beaucoup plus complexe que cela, mais nous allons garder les choses simples dans ce tutoriel !Essayons une requête SELECT
de base sur notre table livres
en utilisant notre client MySQL :
Cette requête récupère tous les champs (*
) à partir de la table livres
. Puisque nous n’avons pas fourni d’autres critères, la requête extrait tous les enregistrements de la table et en affiche toutes les valeurs.
Note : Comme vous pouvez le voir, MySQL a généré automatiquement les valeurs du champ ID
, en commençant par 1.
Que faire si on veut récupérer un seul enregistrement de la table, comme le livre de « Raphaël Goetter » ? Pour affiner la sélection, nous pouvons ajouter une clause WHERE
, comme ceci :
mysql> SELECT * FROM livres WHERE auteur = 'Raphaël Goetter';
+----+---------------+------------------+-------+
| id | titre | auteur | prix |
+----+---------------+------------------+-------+
| 3 | CSS avancées | Raphaël Goetter | 38.00 |
+----+---------------+------------------+-------+
1 row in set (0.01 sec)
SELECT * FROM livres WHERE id = 3;
pour obtenir le même résultatNous pouvons également utiliser d’autres opérateurs, tels que <
(inférieur à), >
(supérieur à), et l’opérateur booléen AND
afin de récupérer une plage d’enregistrements :
Enfin, au lieu de récupérer tous les champs en utilisant *
, on peut préciser uniquement le ou les champs que nous voulons récupérer. Voici un exemple :
Comme vous pouvez le voir, les requêtes SELECT
permettent facilement de récupérer les enregistrements et les champs que nous voulons de notre table.
Résumé
Ce tutoriel vous a présenté les bases de données en général, et plus particulièrement pour MySQL. Voici les différents points que nous avons abordés :
- Le concept d’une base de données, qui vous permet de stocker facilement de grandes quantités de données structurées pour vos sites et applications Web
- Pourquoi une base de données est une bonne idée par rapport à, disons, des fichiers texte contenant des données
- Quelques bonnes raisons de choisir MySQL pour votre SGBD
- Comment installer MySQL et ce, de trois manières différentes : paquets officiels, gestionnaire de paquets sous Linux, installer un package LAMP/WAMP/MAMP tels que XAMPP
- Comment utiliser le client MySQL,
mysql
, afin de vous connecter à votre serveur MySQL et exécuter des commandes - Comment créer des bases de données avec la commande
CREATE DATABASE
- Comment créer des tables avec la commande
CREATE TABLE
- Quelques types de données MySQL :
int
,varchar
etdecimal
- Les concepts d’une valeur
NULL
, de l’auto incrémentation
d’un champ, des champs uniques, et des clés primaires - Ajout d’enregistrements d’une table en utilisant la déclaration
INSERT
- Récupération d’un enregistrement d’une table avec l’instruction
SELECT
Conclusion
Les bases de données MySQL sont un vaste sujet, et il y a des points beaucoup plus importants à explorer, tels que la mise à jour et la suppression d’un enregistrement, les relations entre les tables, la normalisation, la jointure des tables et le regroupement des résultats.
Cependant, j’espère que vous avez trouvé cet article utile comme une introduction générale à MySQL.
Si vous voulez en savoir plus, je vous suggère de consulter le tutoriel MySQL, qui inclue plus de détails sur l’utilisation du client MySQL, sur la création des bases de données, et l’ajout de tables et de données.
Il inclut également certaines questions courantes que vous pouvez rencontrer lors de votre déploiement.
Amusez-vous bien !
Avez-vous rencontré des problèmes lors de la mise en œuvre de ce tutoriel ?