Création Table MySQL : Tutoriel Complet 2026

Créer une table MySQL reste en 2026 une compétence fondamentale pour tout développeur, DBA ou data analyst. Ce tutoriel complet couvre la syntaxe, les types, les contraintes et les bonnes pratiques actuelles.

Syntaxe de base CREATE TABLE #

La commande CREATE TABLE est au cœur du langage DDL.

CREATE TABLE nom_table (
  colonne1 TYPE CONSTRAINTS,
  colonne2 TYPE CONSTRAINTS,
  ...
);
  • Mot-clé : CREATE TABLE
  • Nom table : snake_case recommandé
  • Colonnes : liste entre parenthèses
  • Point-virgule : terminaison obligatoire

Exemple concret : table users #

Cas classique d’une table utilisateurs.

À lire Créer sa marque : Guide complet entrepreneur 2026

CREATE TABLE users (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  email VARCHAR(255) NOT NULL UNIQUE,
  password_hash VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Types de données courants #

MySQL 8.x offre une richesse de types.

Catégorie Types
Entiers TINYINT, SMALLINT, INT, BIGINT
Décimaux DECIMAL, FLOAT, DOUBLE
Chaînes CHAR, VARCHAR, TEXT, LONGTEXT
Date DATE, DATETIME, TIMESTAMP, YEAR
Binaire BINARY, VARBINARY, BLOB
JSON JSON (depuis 5.7)
Géo GEOMETRY, POINT, POLYGON

Contraintes de colonne #

Les contraintes garantissent l’intégrité des données.

  • PRIMARY KEY : clé primaire, unique et non nulle
  • NOT NULL : valeur obligatoire
  • UNIQUE : valeur unique dans la table
  • DEFAULT : valeur par défaut
  • CHECK : validation d’expression (depuis 8.0.16)
  • AUTO_INCREMENT : incrémentation automatique

Clés étrangères et relations #

Les FK matérialisent les relations inter-tables.

CREATE TABLE orders (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  user_id BIGINT UNSIGNED NOT NULL,
  total DECIMAL(10,2),
  FOREIGN KEY (user_id) REFERENCES users(id)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);
  • ON DELETE CASCADE : suppression en cascade
  • ON DELETE SET NULL : mise à NULL
  • ON DELETE RESTRICT : empêche la suppression
  • ON UPDATE CASCADE : propagation des modifications

Index et performance #

Créer les bons index accélère les requêtes.

À lire Tag Line : Créer un Slogan Efficace en 2026

  • PRIMARY KEY : index automatique
  • UNIQUE KEY : contrainte et index
  • INDEX : simple index secondaire
  • FULLTEXT : recherche textuelle
  • SPATIAL : index géométrique
  • Composite : plusieurs colonnes ensemble

Moteurs de stockage #

MySQL propose plusieurs engines, chacun avec ses caractéristiques.

  • InnoDB : défaut, transactionnel, ACID, FK
  • MyISAM : legacy, rapide en lecture, pas de FK
  • Memory : stockage RAM, volatile
  • Archive : compression pour archivage
  • CSV : format tabulaire exporté

En 2026, utilisez toujours InnoDB sauf cas exceptionnel.

Charset et collation #

L’encodage est crucial pour supporter l’international.

  • utf8mb4 : encodage recommandé, supporte emojis
  • utf8mb4_unicode_ci : collation standard
  • utf8mb4_0900_ai_ci : collation MySQL 8, améliorée
  • latin1 : à proscrire sauf legacy

Partitionnement #

Pour les grandes tables, le partitionnement améliore les performances.

À lire Prism de Kapferer : Modèle identité marque

CREATE TABLE logs (
  id BIGINT,
  created_at DATETIME,
  message TEXT
)
PARTITION BY RANGE (YEAR(created_at)) (
  PARTITION p2024 VALUES LESS THAN (2025),
  PARTITION p2025 VALUES LESS THAN (2026),
  PARTITION p2026 VALUES LESS THAN (2027),
  PARTITION pmax VALUES LESS THAN MAXVALUE
);

Modifier une table existante #

ALTER TABLE permet de faire évoluer le schéma.

  • ADD COLUMN : ajouter une colonne
  • DROP COLUMN : supprimer
  • MODIFY COLUMN : changer type
  • RENAME COLUMN : renommer
  • ADD INDEX : créer un index
  • DROP INDEX : supprimer un index

Bonnes pratiques 2026 #

Quelques règles pour des schémas maintenables.

  • Nommage : snake_case, pluriel pour tables (users, orders)
  • ID : BIGINT UNSIGNED AUTO_INCREMENT
  • created_at / updated_at : systématiques
  • Soft delete : deleted_at TIMESTAMP NULL
  • Charset : utf8mb4 obligatoire
  • Migrations : Liquibase, Flyway, ou via ORM
  • Revue de schéma : audit régulier

Créer une table depuis un SELECT #

MySQL permet de cloner une structure et des données.

CREATE TABLE users_archive AS
SELECT * FROM users WHERE created_at < '2024-01-01';

Attention : les index et contraintes ne sont pas copiés automatiquement.

À lire Compte Pro Instagram : Guide Création 2026

Conclusion #

La création de tables MySQL en 2026 repose toujours sur CREATE TABLE mais intègre maintenant JSON, partitionnement et contraintes CHECK. Privilégiez InnoDB, utf8mb4, des IDs BIGINT et des timestamps systématiques. Automatisez les changements via des migrations versionnées, et documentez vos schémas pour garantir la maintenance sur le long terme.

ALJ Création est édité de façon indépendante. Soutenez la rédaction en nous ajoutant dans vos favoris sur Google Actualités :