Dans le manuel MySQL, il est écrit:
BOOL, BOOLEAN
Ces types sont synonymes de TINYINT (1). Une valeur de zéro est considérée comme fausse. Les valeurs non nulles sont considérées comme vraies:
J'ai créé une colonne BOOLEAN avec 0
comme valeur par défaut. Ensuite, je mets à jour la valeur 2
. Logiquement, je m'attendrais à ce que MySQL accepte l'un 0
ou l' autre, 1
car il s'agit d'un booléen. Cependant, MySQL n'a pas généré d'erreur et ne m'a pas empêché d'effectuer la mise à jour.
Si BOOLEAN fonctionne exactement de la même manière que TINYINT (1), cela fait-il une différence que j'utilise TINYINT (1) ou BOOLEAN?
BIT
s'agit vraiment d'un champ de bits qui contient de un à soixante-quatre bits de manière compacte.Si vous travaillez avec d'autres personnes (ou si vous souhaitez vous en souvenir), vous pouvez utiliser le type de données
BOOLEAN
pour suggérer que les données sont uniquement destinées à prendre une valeur de 1 ou 0.la source
Il me semble qu'il y a bien une différence.
Dans une table que j'utilise, j'ai une colonne définie comme un minuscule avec un index sur la colonne. Lorsque j'appelle la requête suivante "expliquer la sélection * de la table où la colonne est vraie", cela indique qu'il va lire toutes les lignes de la table (les colonnes "possible_keys" et "ref" sont nulles malgré la colonne "clé" montrant la indice).
Changer la requête en "expliquer sélectionner * dans le tableau où colonne = 1" l'index entre correctement, avec les colonnes "clés possibles" et "ref" auxquelles des valeurs sont attribuées et les "lignes" sont définies sur un nombre beaucoup plus faible.
J'ai également essayé de remplacer le "vrai" par "faux" et le 1 par un 0 et j'ai obtenu des résultats comparables.
Pour aller plus loin, je suis passé d'un minuscule à un int et cela n'a fait aucune différence.
la source