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.