- 1 1. Introduction
- 2 2. Qu’est‑ce qu’un schéma ?
- 3 3. Comment créer un schéma dans MySQL
- 4 4. Bonnes pratiques lors de la création de schémas
- 5 5. Gestion et exploitation des schémas
- 6 6. Gestion sécurisée des données multilingues
- 7 7. Questions fréquemment posées (FAQ)
- 7.1 Q1. « schéma » et « base de données » sont-ils identiques dans MySQL ?
- 7.2 Q2. Que se passe-t-il si je ne spécifie pas d’encodage de caractères ?
- 7.3 Q3. Puis-je changer l’encodage ultérieurement ?
- 7.4 Q4. Comment sauvegarder un schéma ?
- 7.5 Q5. Comment restreindre l’accès au schéma à des utilisateurs spécifiques ?
1. Introduction
Pourquoi créer un schéma dans MySQL ?
Lorsque vous travaillez avec des bases de données MySQL, vous avez peut‑être déjà rencontré l’expression « créer un schéma ».
Un schéma représente la structure ou le plan d’une base de données et se compose d’un ensemble d’objets tels que tables, vues, index et déclencheurs. Dans MySQL, les termes « schéma » et « base de données » sont presque synonymes. Cependant, comparés à d’autres SGBDR (Systèmes de Gestion de Bases de Données Relationnelles), leurs significations peuvent différer.
Dans cet article, nous expliquons de façon systématique comment créer un schéma dans MySQL, les considérations importantes et les meilleures pratiques concrètes. Pour les débutants en particulier, ce guide clarifie des questions comme « Qu’est‑ce qu’un schéma ? » et « Comment en créer un ? »
Aperçu rapide : différence entre schéma et base de données
Dans MySQL, il est tout à fait correct de comprendre que « créer un schéma » signifie « créer une base de données ».
En revanche, dans d’autres systèmes de bases de données comme Oracle et PostgreSQL, un « schéma » est un groupe logique (espace de noms) au sein d’une base de données et n’est pas nécessairement synonyme d’une base de données. Comprendre cette différence permet d’éviter la confusion lors de migrations ou d’intégrations avec d’autres plateformes SGBDR.
Public cible et objectifs de cet article
Cet article s’adresse aux lecteurs suivants :
- Débutants utilisant MySQL pour la première fois
- Personnes souhaitant comprendre les bases et le processus de création des schémas
- Ingénieurs ou étudiants prévoyant d’utiliser MySQL dans des projets réels
À la fin de cet article, vous serez capable de créer correctement des schémas dans MySQL et de les concevoir en tenant compte du codage des caractères et des bonnes pratiques de gestion.
2. Qu’est‑ce qu’un schéma ?
Concept de base d’un schéma
Un schéma désigne le cadre qui définit la structure ou le plan d’une base de données.
Plus précisément, un schéma comprend les objets utilisés pour gérer et manipuler les données, tels que tables, vues, index, procédures stockées et déclencheurs.
Dans MySQL, « schéma = base de données », et vous créez un schéma à l’aide de la commande CREATE DATABASE. En d’autres termes, lorsque vous entendez le terme « schéma » dans MySQL, vous pouvez le considérer comme la base de données elle‑même.
CREATE DATABASE sample_db;
Avec cette simple commande, vous pouvez créer un schéma (base de données).
Différences avec les schémas dans d’autres SGBDR
Dans MySQL, schéma et base de données sont presque synonymes, mais dans d’autres SGBDR, la signification peut différer.
| Database System | Definition of Schema |
|---|---|
| MySQL | Refers to the entire database (synonymous) |
| PostgreSQL | A namespace within a database (multiple schemas allowed) |
| Oracle | A data storage unit corresponding to a user (user = schema) |
Par exemple, PostgreSQL autorise plusieurs schémas au sein d’une même base de données, chaque schéma fonctionnant comme un espace de noms indépendant. En revanche, MySQL utilise un schéma par base de données. Comprendre cette différence est important pour la conception du système et la portabilité.
Rôle et avantages des schémas
Les schémas offrent les avantages suivants :
- Structure organisée : regrouper logiquement tables et vues améliore la gestion
- Contrôle d’accès : les permissions peuvent être définies par schéma pour renforcer la sécurité
- Modélisation claire des données : définir la structure logique lors de la conception améliore l’efficacité du développement en équipe
Dans MySQL, la plupart de ces bénéfices sont réalisés au niveau de la base de données, ce qui en fait un concept crucial dans les environnements pratiques.
3. Comment créer un schéma dans MySQL
Création de base d’un schéma : la commande CREATE DATABASE
La façon la plus fondamentale de créer un schéma (= base de données) dans MySQL consiste à utiliser l’instruction CREATE DATABASE. La syntaxe de base est :
CREATE DATABASE schema_name;
Par exemple, pour créer un schéma nommé « sample_db » :
CREATE DATABASE sample_db;
L’exécution de cette commande crée une base de données (schéma) vide nommée sample_db. C’est le point de départ de la création d’un schéma dans MySQL.
Utilisation de IF NOT EXISTS pour éviter les erreurs de duplication
Essayer de créer un schéma qui existe déjà entraîne une erreur. Vous pouvez éviter cela en utilisant l’option IF NOT EXISTS :
CREATE DATABASE IF NOT EXISTS sample_db;
Cette syntaxe est particulièrement utile dans les environnements de développement où les scripts peuvent être exécutés à plusieurs reprises.
Définir le jeu de caractères et le classement
Lors du traitement de données multilingues (y compris le texte japonais), spécifier le jeu de caractères et le collation est extrêmement important. Des paramètres incorrects peuvent entraîner du mojibake (texte corrompu) ou des problèmes de tri.
CREATE DATABASE sample_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
Paramètres recommandés :
- CHARACTER SET :
utf8mb4(prend en charge les données multilingues, y compris les emoji) - COLLATE :
utf8mb4_general_ci(plus rapide mais moins strict),utf8mb4_unicode_ci, ouutf8mb4_0900_ai_ci(recommandé pour MySQL 8.0+)
Ces paramètres aident à prévenir les futurs problèmes d’encodage de texte.
Qu’en est-il de CREATE SCHEMA?
MySQL prend également en charge la syntaxe CREATE SCHEMA, qui se comporte exactement comme CREATE DATABASE. Les deux peuvent être utilisées, mais CREATE DATABASE est plus couramment utilisée dans la pratique MySQL.
CREATE SCHEMA IF NOT EXISTS sample_db
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_general_ci;
Vous pouvez choisir en fonction de vos préférences, mais la cohérence au sein d’une équipe ou d’un projet est recommandée.
4. Bonnes pratiques lors de la création de schémas
Créer un schéma dans MySQL est simple, mais dans les environnements réels, la conception et la gestion opérationnelles à long terme sont essentielles.
Établir des conventions de nommage cohérentes
Appliquez des règles de nommage claires et cohérentes pour les noms de schémas, de tables et de colonnes. Un nommage incohérent peut entraîner de la confusion lors de la maintenance et de l’extension.
Exemples de règles de nommage
- Utilisez le snake_case (
sample_table) - Nommez les tables avec des noms communs (par ex.,
users,orders) - Évitez les préfixes inutiles
Documentez et partagez les conventions de nommage au sein de votre équipe.
Définir explicitement l’encodage des caractères
Comme mentionné précédemment, l’encodage des caractères est fondamental. Pour les projets multilingues, spécifiez explicitement utf8mb4.
CREATE DATABASE example_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
L’ancien utf8 ne prend en charge que jusqu’à 3 octets et peut poser des problèmes avec les emoji ou certains caractères. Utilisez toujours utf8mb4 dans les nouveaux projets.
Planifier soigneusement les paramètres d’autorisations
Après avoir créé un schéma, attribuez les privilèges utilisateurs appropriés. Accorder tous les privilèges à tous les utilisateurs constitue un risque de sécurité.
GRANT ALL PRIVILEGES ON example_db.* TO 'app_user'@'localhost';
Envisagez une conception d’autorisations basée sur les rôles :
| Role | Example Privileges |
|---|---|
| Administrator | All privileges (CREATE, DROP, GRANT, etc.) |
| Application | SELECT, INSERT, UPDATE, etc. |
| Read-only | SELECT only |
Vous pouvez gérer les privilèges à l’aide de REVOKE et SHOW GRANTS.
Sauvegarder la structure initiale du schéma
Même lorsqu’aucune donnée n’existe, exporter et sauvegarder la structure initiale du schéma est extrêmement utile.
mysqldump -u root -p --no-data example_db > schema_structure.sql
Cela vous permet d’appliquer facilement la structure à d’autres environnements.

5. Gestion et exploitation des schémas
Après avoir créé un schéma dans MySQL, vous avez besoin des compétences pour le gérer et l’exploiter correctement.
5.1 Afficher la liste des schémas
Pour afficher les schémas (bases de données) existants :
SHOW DATABASES;
Cela affiche tous les schémas, y compris les bases de données système comme information_schema et mysql.
5.2 Utiliser (basculer) un schéma
Pour spécifier le schéma de travail :
USE sample_db;
Cela change le contexte de session vers sample_db.
5.3 Supprimer un schéma
Pour supprimer un schéma inutilisé :
DROP DATABASE sample_db;
Avertissement :
Cette opération ne peut pas être annulée. Toutes les tables, vues et données du schéma seront supprimées.
Par mesure de sécurité :
DROP DATABASE IF EXISTS sample_db;
5.4 Gestion des tables et des vues
Créer une table
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(255)
);
Lister les tables
SHOW TABLES;
Créer une vue
CREATE VIEW active_users AS
SELECT id, name
FROM users
WHERE active = 1;
Lister les vues
SHOW FULL TABLES WHERE Table_type = 'VIEW';
Supprimer des tables ou des vues
DROP TABLE users;
DROP VIEW active_users;
Une gestion appropriée du schéma améliore considérablement la scalabilité et la maintenabilité du système.
6. Gestion sécurisée des données multilingues
Le problème le plus courant auquel les débutants sont confrontés dans les environnements multilingues est le « mojibake » (texte corrompu), causé par des paramètres d’encodage de caractères incompatibles.
Causes du mojibake
Les paramètres d’encodage doivent correspondre dans trois domaines :
- Encodage de la base de données (schéma)
- Encodage des tables/colonnes
- Encodage de la communication client-serveur
Si ces paramètres diffèrent, le texte inséré peut apparaître sous forme de « ??? » au lieu des caractères prévus.
Paramètres d’encodage recommandés
Lors de la création d’une base de données :
CREATE DATABASE japanese_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Lors de la création d’une table :
CREATE TABLE messages (
id INT PRIMARY KEY AUTO_INCREMENT,
content TEXT
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Vérifier les paramètres du client :
SHOW VARIABLES LIKE 'character_set%';
Si nécessaire :
SET NAMES utf8mb4;
Configuration du serveur (my.cnf / my.ini)
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
Redémarrez MySQL après avoir apporté les modifications.
Si le mojibake se produit
- Vérifiez l’encodage avec
SHOW CREATE TABLE table_name; - Assurez-vous que le client utilise
utf8mb4 - Effectuez le dump et la restauration avec un encodage explicite (par ex.,
--default-character-set=utf8mb4)
7. Questions fréquemment posées (FAQ)
Q1. « schéma » et « base de données » sont-ils identiques dans MySQL ?
A1. Oui. Dans MySQL, ils sont presque synonymes. CREATE DATABASE et CREATE SCHEMA se comportent de la même façon.
Q2. Que se passe-t-il si je ne spécifie pas d’encodage de caractères ?
A2. L’encodage par défaut du serveur s’applique. Il peut être latin1 ou utf8, ce qui peut provoquer du mojibake. Spécifiez toujours explicitement utf8mb4.
Q3. Puis-je changer l’encodage ultérieurement ?
A3. Oui, en utilisant :
ALTER DATABASE mydb
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Cependant, les tables existantes doivent être modifiées séparément.
Q4. Comment sauvegarder un schéma ?
mysqldump -u root -p --databases sample_db > sample_db.sql
Restauration :
mysql -u root -p < sample_db.sql
Q5. Comment restreindre l’accès au schéma à des utilisateurs spécifiques ?
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON sample_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
Attribuez les permissions en fonction des rôles des utilisateurs pour une sécurité adéquate.


