Używam MySQL w wersji 5.1.49-1ubuntu8.1. Pozwala mi zdefiniować kolumny dwóch różnych typów danych: BOOL
i BOOLEAN
. Jakie są różnice między tymi dwoma typami?
mysql
sqldatatypes
ikostia
źródło
źródło
Jak ustalono w innych komentarzach, są one synonimami TINYINT (1).
* Więc dlaczego kłopoczą się rozróżnianiem między bool, boolean, tiny * int (1)?
Głównie semantyka.
Bool i Boolean: MySQL domyślnie konwertuje je do typu tinyint. Zgodnie z oświadczeniem MySQL wydanym mniej więcej w czasie pisania tego tekstu: „Zamierzamy zaimplementować pełną obsługę typów logicznych, zgodnie ze standardowym SQL, w przyszłej wersji MySQL”.
0 = FAŁSZ 1 = PRAWDA
TINYINT: zajmuje jeden bajt; waha się od -128 do +127; lub 0 - 256.
Często poruszane w tym porównaniu: Po MySQL 5.0.3 - Bit: używa 8 bajtów i przechowuje tylko dane binarne.
źródło
BOOL
iBOOLEAN
?Bit: Uses 8 bytes and stores only binary data.
to nieprawidłowe informacje. Kiedy dodasz kolumnę bitową do swojej tabeli, zajmie ona cały bajt w każdym rekordzie, a nie tylko pojedynczy bit. Po dodaniu drugiej kolumny bitowej zostanie ona zapisana w tym samym bajcie. Dziewiąta kolumna bitowa będzie wymagać drugiego bajtu pamięci.Jedna rzecz, którą właśnie zauważyłem - z kolumną zdefiniowaną jako BOOL w MySql, Spring Roo poprawnie generuje kod Java, aby cofnąć wartość do wartości logicznej, więc przypuszczalnie określenie BOOL może dodać jakąś wartość, nawet jeśli ma to tylko charakter wskazówki na temat zamierzone zastosowanie kolumny.
źródło
sprawdź przegląd dokumentacji MySQL na temat typów liczbowych:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
źródło