Quelle est la différence entre les types de données de colonne MySQL BOOL et BOOLEAN?

87

J'utilise MySQL version 5.1.49-1ubuntu8.1. Cela me permet de définir des colonnes de deux types de données différents: BOOLet BOOLEAN. Quelles sont les différences entre les deux types?

Ikostia
la source

Réponses:

135

Ce sont tous deux des synonymes de TINYINT (1) .

Adam Prax
la source
11
Ce que dit Adam. Il n'y a pas de type BOOLEAN réel dans MySQL.
Mchl
25

Comme établi dans d'autres commentaires, ce sont des synonymes de TINYINT (1).

* Alors, pourquoi se donnent-ils la peine de différencier booléen, booléen, tiny * int (1)?

Surtout la sémantique.

Bool et Boolean: MySQL par défaut les convertit en type tinyint. Selon une déclaration MySQL faite au moment de la rédaction de cet article, "Nous avons l'intention de mettre en œuvre une gestion complète des types booléens, conformément au SQL standard, dans une future version de MySQL."

0 = FAUX 1 = VRAI

TINYINT: occupe un octet; varie de -128 à +127; ou, 0 - 256.


Communément mentionné dans cette comparaison: Après MySQL 5.0.3 - Bit: Utilise 8 octets et ne stocke que des données binaires.

Sixthfore
la source
2
Cela ne répond pas vraiment à la question. Quelle est la différence entre BOOLet BOOLEAN?
nalply
7
Des articles antérieurs avaient déjà établi que les deux sont synonymes de TINYINT (1). Idéalement, la question suivante serait "Pourquoi, alors, ont-ils fait la différence entre les types de données?"
Sixthfore
3
@Sixthfore les Bit: Uses 8 bytes and stores only binary data.informations sont incorrectes. Lorsque vous ajoutez une colonne de bits à votre table, elle occupera un octet entier dans chaque enregistrement, pas seulement un seul bit. Lorsque vous ajoutez une deuxième colonne de bits, elle sera stockée dans le même octet. La neuvième colonne de bits nécessitera un deuxième octet de stockage.
Kolyunya
4

Une chose que je viens de remarquer - avec une colonne définie comme BOOL dans MySql, Spring Roo génère correctement du code Java pour supprimer la valeur d'un booléen, donc la spécification de BOOL peut vraisemblablement ajouter de la valeur, même si ce n'est que dans la nature d'un indice sur le utilisation prévue de la colonne.

Simonie
la source