Jaka jest różnica między typami danych kolumn MySQL BOOL i BOOLEAN?

88

Używam MySQL w wersji 5.1.49-1ubuntu8.1. Pozwala mi zdefiniować kolumny dwóch różnych typów danych: BOOLi BOOLEAN. Jakie są różnice między tymi dwoma typami?

ikostia
źródło

Odpowiedzi:

136

Oba są synonimami TINYINT (1) .

Adam Prax
źródło
11
Co mówi Adam. W MySQL nie ma rzeczywistego typu BOOLEAN.
Mchl
25

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.

Po szóste
źródło
2
To naprawdę nie odpowiada na pytanie. Jaka jest różnica między BOOLi BOOLEAN?
nalply
7
We wcześniejszych postach ustalono już, że oba są synonimami TINYINT (1). Najlepiej byłoby, gdyby następne pytanie brzmiało „Dlaczego więc rozróżnili typy danych?”
Szósty przed
3
@Sixth Dlatego są 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.
Kolyunya
4

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.

Symonia
źródło