MySQL

Altération de la structure d’une table

C’est ici que MySQL devient un scalpel. Si tu manipules mal, tu te coupes. On prend donc ça proprement.


🛠️ Altération de la structure d’une table

(ADD, MODIFY, RENAME, DROP, FOREIGN KEY, INDEX…)

La commande centrale est :

ALTER TABLE NomTable ...

Tout ce qui suit dépend de ce que tu veux modifier.

On passe en revue tous les cas réels, avec des exemples concrets adaptés à une base comme SAMI ou VEHICLE.

➕ 1. Ajouter une colonne (ADD COLUMN)

Tu changes ton modèle de données ?

Tu veux ajouter un champ DateNaissance à la table User ?

ALTER TABLE User
ADD COLUMN DateNaissance DATE;

Si tu veux placer la colonne à un endroit précis (rare, mais possible) :

ALTER TABLE User
ADD COLUMN AvatarURL VARCHAR(255) AFTER Email;

✏️ 2. Modifier un type ou une contrainte (MODIFY / CHANGE)

Modifier uniquement le type :

ALTER TABLE User
MODIFY COLUMN Nom VARCHAR(200);

Modifier type + nom de colonne (CHANGE) :

ALTER TABLE User
CHANGE COLUMN Nom NomComplet VARCHAR(200);

CHANGE sert à renommer et modifier en même temps.

🆔 3. Rendre une colonne NOT NULL / NULL

Exemples :

Rendre obligatoire :

ALTER TABLE User
MODIFY COLUMN Email VARCHAR(150) NOT NULL;

Autoriser null :

ALTER TABLE User
MODIFY COLUMN Surnom VARCHAR(150) NULL;

🔤 4. Renommer une colonne (RENAME COLUMN)

Version moderne (MySQL 8) :

ALTER TABLE User
RENAME COLUMN Surnom TO Pseudo;

📦 5. Supprimer une colonne (DROP COLUMN)

ALTER TABLE User
DROP COLUMN AvatarURL;

⚠️ Attention : opération destructive — irréversible.

🔗 6. Ajouter une clé étrangère (ADD FOREIGN KEY)

Exemple : lier Video à User (propriétaire de l’upload)

ALTER TABLE Video
ADD CONSTRAINT FK_Video_User
  FOREIGN KEY (UserID) REFERENCES User(UserID);

🔓 7. Supprimer une clé étrangère (DROP FOREIGN KEY)

D’abord, identifier le nom de la contrainte :

SHOW CREATE TABLE Video;

Tu verras une ligne comme :

CONSTRAINT `FK_Video_User` FOREIGN KEY (`UserID`) REFERENCES `User` (`UserID`)

Ensuite, tu peux la retirer :

ALTER TABLE Video
DROP FOREIGN KEY FK_Video_User;

📇 8. Ajouter un index (ADD INDEX)

Indispensable pour les performances, par exemple sur une colonne souvent filtrée (Email, Titre, etc.).

ALTER TABLE User
ADD INDEX idx_email (Email);

Index unique :

ALTER TABLE User
ADD UNIQUE idx_unique_email (Email);

🗑️ 9. Supprimer un index (DROP INDEX)

ALTER TABLE User
DROP INDEX idx_email;

🪄 10. Renommer une table complète (RENAME TABLE)

RENAME TABLE User TO Utilisateur;

🧭 11. Exemple complet : refonte d’une table VideoGenre (cas SAMI)

Supposons que tu veux :

  • renommer VideoGenre → Video_Genre
  • supprimer la colonne inutile OldCode
  • ajouter une colonne CreateDate
  • remettre une clé étrangère propre

Étape 1 — renommer la table :

RENAME TABLE VideoGenre TO Video_Genre;

Étape 2 — supprimer une colonne :

ALTER TABLE Video_Genre
DROP COLUMN OldCode;

Étape 3 — ajouter une nouvelle colonne avec valeur par défaut :

ALTER TABLE Video_Genre
ADD COLUMN CreateDate DATETIME DEFAULT CURRENT_TIMESTAMP;

Étape 4 — supprimer et recréer la clé étrangère :

ALTER TABLE Video_Genre
DROP FOREIGN KEY FK_VideoGenre_Video;

ALTER TABLE Video_Genre
ADD CONSTRAINT FK_Video_Genre_Video
  FOREIGN KEY (VideoID) REFERENCES Video(VideoID);

🧱 12. Voir les changements (SHOW CREATE TABLE)

Toujours vérifier :

SHOW CREATE TABLE User;
SHOW CREATE TABLE Video;

C’est le moyen le plus fiable de vérifier la structure réelle.

🎯 Conclusion

Altérer une table permet de :

  • améliorer ton schéma
  • corriger un oubli
  • optimiser les performances
  • ajouter de nouvelles fonctionnalités
  • maintenir la cohérence de ton app

C’est une brique essentielle du quotidien d’un développeur backend sérieux.

Previous
Créer et afficher les bases de données / tables