Dans quels cas utiliseriez-vous lequel? Y a-t-il une grande différence? Lesquels les moteurs de persistance utilisent-ils généralement pour stocker des booléens?
Réponses
Trop de publicités?De vue d'ensemble des Types Numériques;
BIT[(M)]
Un peu de type de champ. M indique le nombre de bits par valeur, de 1 à 64. La valeur par défaut est 1 si M est omis.
Ce type de données a été ajoutée en MySQL 5.0.3 pour MyISAM, et étendu dans le 5.0.5 pour MÉMOIRE, InnoDB, BDB, et NDBCLUSTER. Avant 5.0.3, est un PEU synonyme de TINYINT(1).
TINYINT[(M)] [UNSIGNED] [ZEROFILL NE]
Un très petit nombre entier. La signature de la gamme est -128 à 127. La gamme est non signé De 0 à 255.
En outre, considérez ceci;
BOOL BOOLÉEN
Ces types sont des synonymes pour TINYINT(1). Une valeur de zéro est considérée comme fausse. Les valeurs Non nulles sont considérée comme vraie.
Tous ces débats théoriques sont grands, mais en réalité, au moins si vous utilisez MySQL et vraiment pour SQLServer ainsi, il est préférable de s'en tenir à la non-binaire de données pour votre booléens pour la simple raison qu'il est plus facile de travailler lorsque vous êtes de la sortie des données, l'interrogation et ainsi de suite. Il est particulièrement important si vous essayez de réaliser l'interopérabilité entre les bases de données MySQL et SQLServer (c'est à dire que vous synchronisez les données entre les deux), parce que la manipulation de BITS type de données est différente dans les deux d'entre eux. De SORTE qu'en pratique vous aurez beaucoup moins de tracas si vous vous en tenez à un type de données numérique. Je recommande, pour MySQL, pour coller avec BOOL BOOLÉEN ou qui est stocké comme TINYINT(1). Même la façon de MySQL Workbench MySQL et Administrateur d'afficher le type de données BIT n'est pas agréable (c'est un peu le symbole pour les données binaires). Alors, soyez pratique et vous épargner les tracas (et malheureusement, je parle par expérience).
Il doit permettre seulement des 0 et des 1 (NULLE, si le champ n'est pas défini comme not NULL). TINYINT(1) permet à une valeur qui peut être stocké dans un octet, -128..127 ou 0..255 fonction de si oui ou non c'est non signé (le 1 montre que vous avez l'intention d'utiliser uniquement un seul chiffre, mais cela ne vous empêche pas de stocker une valeur plus grande).
Pour les versions antérieures à la version 5.0.3, PEU est interprété comme TINYINT(1), donc il n'y a pas de différence.
PEU a un "c'est un booléen" sémantique, et certaines applications sera envisager TINYINT(1) de la même manière (en raison de la façon MySQL utilisé pour traiter l'), de sorte que les applications peuvent format de la colonne comme une case à cocher si elles vérifiez le type et choisir un format basé sur cela.