114 votes

Quelle est la différence entre BIT et TINYINT dans MySQL?

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?

132voto

Robert Gamble Points 41984

Un TINYINT est une valeur entière de 8 bits, un champ BIT peut stocker entre 1 bit, BIT (1) et 64 bits, BIT (64). Pour une valeur booléenne, BIT (1) est assez commun.

62voto

nmiranda Points 2301

alt text

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.

42voto

Sheldmandu Points 474

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).

12voto

Michael Madsen Points 30610

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.

6voto

Allen Hardy Points 103

Peut-être tort mais:

Tinyint est un entier compris entre 0 et 255

le bit est 1 ou 0

C'est donc pour moi un peu le choix des booléens

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X