Sto usando MySQL versione 5.1.49-1ubuntu8.1. Mi consente di definire colonne di due diversi tipi di dati: BOOL
e BOOLEAN
. Quali sono le differenze tra i due tipi?
Risposte:
Come stabilito in altri commenti, sono sinonimi di TINYINT (1).
* Allora, perché si preoccupano di distinguere tra bool, boolean, tiny * int (1)?
Per lo più semantica.
Bool e Boolean: l'impostazione predefinita di MySQL li converte nel tipo tinyint. Secondo un'istruzione MySQL rilasciata nel periodo in cui scrivo, "Intendiamo implementare la gestione completa dei tipi booleani, in conformità con lo standard SQL, in una futura versione di MySQL".
0 = FALSO 1 = VERO
TINYINT: occupa un byte; varia da -128 a +127; o, 0 - 256.
Solitamente visualizzato in questo confronto: Dopo MySQL 5.0.3 - Bit: utilizza 8 byte e memorizza solo dati binari.
BOOL
e BOOLEAN
?
Bit: Uses 8 bytes and stores only binary data.
informazioni sono errate. Quando aggiungi una colonna di bit alla tua tabella, occuperà un intero byte in ogni record, non solo un singolo bit. Quando aggiungi una seconda colonna di bit, verrà memorizzata nello stesso byte. La colonna del nono bit richiederà un secondo byte di archiviazione.
Una cosa che ho appena notato: con una colonna definita come BOOL in MySql, Spring Roo genera correttamente codice Java per unmarshalling il valore in un booleano, quindi presumibilmente specificando BOOL può aggiungere un valore, anche se è solo nella natura di un suggerimento sul destinazione d'uso della colonna.
controlla la panoramica dei documenti MySQL sui tipi numerici:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html