Je concevais une base de données pour un site où je dois utiliser un type de données booléen pour stocker seulement 2 états, vrai ou faux. J'utilise MySQL.
Lors de la conception de la base de données à l'aide de phpMyAdmin, j'ai constaté que j'avais à la fois le type de données BOOLEAN et le type de données TINYINT.
J'ai parcouru différents articles, certains ont dit que TINYINT est le même que BOOLEAN, aucune différence. Certains disent que BOOLEAN est converti en TINYINT dans MySQL.
Ma question est: s'ils sont tous les deux identiques, pourquoi y en a-t-il deux? Il ne devrait y en avoir qu'un seul.
Voici la référence aux articles que j'ai lus:
http://www.careerride.com/MySQL-BOOL-TINYINT-BIT.aspx
http://dev.mysql.com/doc/refman/5.5/en/numeric-type -overview.html
BIT(1)
ouBIT(17)
ou mêmeBIT(64)
Juste une note pour les développeurs php (il me manque les points stackoverflow nécessaires pour poster ceci en commentaire) ... la conversion automatique (et silencieuse) en TINYINT signifie que php récupère une valeur d'une colonne "BOOLEAN" comme un "0" ou "1", pas l'attendu (par moi) vrai / faux.
Un développeur qui regarde le SQL utilisé pour créer une table et voit quelque chose comme: "some_boolean BOOLEAN NOT NULL DEFAULT FALSE" pourrait raisonnablement s'attendre à voir des résultats vrai / faux lorsqu'une ligne contenant cette colonne est récupérée. A la place (du moins dans ma version de PHP), le résultat sera "0" ou "1" (oui, une chaîne "0" ou une chaîne "1", pas un int 0/1, merci php).
C'est un peu, mais suffisant pour faire échouer les tests unitaires.
la source
Les dernières versions de MySQL ont le nouveau
BIT
type de données dans lequel vous pouvez spécifier le nombre de bits dans le champ, par exempleBIT(1)
à utiliser commeBoolean
type, car il ne peut s'agir que de0
ou1
.la source
À partir de la référence de version MySql 5.1
=================================================== ========================
https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-numeric
la source
L'aperçu des types numériques pour MySQL indique: BOOL, BOOLEAN: Ces types sont des synonymes de TINYINT (1). Une valeur de zéro est considérée comme fausse. Les valeurs différentes de zéro sont considérées comme vraies.
Voir ici: https://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html
la source