Veuillez consulter la Documentation de MySQL , les différences entre ces types sont expliquées.
Mais pour répondre à votre question, VARCHAR est un champ de longueur définie par l'utilisateur, tandis que les champs de texte ont une taille définie par le système :
- VarChar [1-peu importe (max à 65535)]
- TinyText 255 (2^8 - 1)
- Texte 65535 (2^16 - 1)
- Texte moyen 16M (2^24 - 1)
- LongText 4G (2^32 - 1)
Donc, j'utilise VarChar chaque fois que j'ai besoin d'un champ inférieur à 255.