Il n'y a pas de différence.
Cependant, il y a une mise en garde si vous stockez une chaîne.
Si vous souhaitez uniquement stocker un tableau d'octets ou d'autres données binaires telles qu'un flux ou un fichier, utilisez le type binaire car c'est à cela qu'il est destiné.
Citation du manuel MySQL :
Donc, techniquement, il n'y a pas de différence.
Cependant, lors du stockage d'une chaîne, celle-ci doit être convertie d'une chaîne en valeurs d'octets à l'aide d'un jeu de caractères. La décision est soit de le faire vous-même avant le serveur MySQL, soit de laisser MySQL le faire pour vous. MySQL fonctionnera avec en convertissant une chaîne en BINARY
en utilisant les jeux de caractères BIN.
Si vous souhaitez stocker l'encodage dans un autre format, disons que vous avez une exigence commerciale qui indique que vous devez utiliser 4 octets par caractère (MySQL ne le fait pas par défaut), vous pouvez alors utiliser le CHARACTER SET BINARY
à une colonne textuelle et effectuez vous-même l'encodage du jeu de caractères.
Il vaut également la peine de lire Le BINARY
et VARBINARY
Genre
du manuel MySQL car il détaille des informations importantes telles que le remplissage.
Résumé : Il n'y a pas de différence technique car l'un est synonyme de l'autre. À mon avis, il est logique de stocker des chaînes binaires dans des types de données qui contiendraient normalement une chaîne en utilisant le CHARACTER SET BINARY
et pour stocker des tableaux d'octets / flux, etc. dans BINARY
les champs qui ne peuvent pas être représentés en transformant les données via un jeu de caractères.