Ich verwende MySQL Version 5.1.49-1ubuntu8.1. Es ermöglicht mir, Spalten mit zwei verschiedenen Datentypen zu definieren: BOOL
und BOOLEAN
. Was sind die Unterschiede zwischen den beiden Typen?
mysql
sqldatatypes
Ikostia
quelle
quelle
Wie in anderen Kommentaren festgestellt, sind sie Synonyme für TINYINT (1).
* Also, warum machen sie sich die Mühe, zwischen bool, boolean, tiny * int (1) zu unterscheiden?
Meistens Semantik.
Bool und Boolean: MySQL konvertiert diese standardmäßig in den Typ tinyint. In einer MySQL-Anweisung, die zum Zeitpunkt dieses Schreibens abgegeben wurde, heißt es: "Wir beabsichtigen, in einer zukünftigen MySQL-Version eine vollständige Behandlung boolescher Typen gemäß Standard-SQL zu implementieren."
0 = FALSE 1 = TRUE
TINYINT: Besetzt ein Byte; reicht von -128 bis +127; oder 0 - 256.
In diesem Vergleich häufig erwähnt: Nach MySQL 5.0.3 - Bit: Verwendet 8 Bytes und speichert nur Binärdaten.
quelle
BOOL
undBOOLEAN
?Bit: Uses 8 bytes and stores only binary data.
ist falsche Information. Wenn Sie Ihrer Tabelle eine Bitspalte hinzufügen, belegt diese in jedem Datensatz ein ganzes Byte und nicht nur ein einzelnes Bit. Wenn Sie eine zweite Bitspalte hinzufügen, wird diese im selben Byte gespeichert. Die neunte Bitspalte benötigt ein zweites Byte Speicher.Eines ist mir gerade aufgefallen: Mit einer Spalte, die in MySql als BOOL definiert ist, generiert Spring Roo korrekt Java-Code, um den Wert für einen Booleschen Wert zu entfernen. Vermutlich kann die Angabe von BOOL einen Wert hinzufügen, auch wenn dies nur in der Natur eines Hinweises auf das liegt Verwendungszweck der Säule.
quelle
Überprüfen Sie die Übersicht der numerischen Typen in den MySQL-Dokumenten:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
quelle