Я использую MySQL версии 5.1.49-1ubuntu8.1. Это позволяет мне определять столбцы двух разных типов данных: BOOL
и BOOLEAN
. В чем разница между двумя типами?
Ответы:
Оба они являются синонимами TINYINT (1) .
Как установлено в других комментариях, они являются синонимами TINYINT (1).
* Итак, почему они пытаются различать bool, boolean, tiny * int (1)?
В основном семантика.
Bool и Boolean: MySQL по умолчанию преобразует их в тип tinyint. Согласно заявлению MySQL, сделанному примерно во время написания этой статьи: «Мы намерены реализовать полную обработку логических типов в соответствии со стандартным SQL в будущей версии MySQL».
0 = ЛОЖЬ 1 = ИСТИНА
TINYINT: занимает один байт; колеблется от -128 до +127; или 0 - 256.
Обычно упоминается в этом сравнении: После MySQL 5.0.3 - Бит: использует 8 байтов и хранит только двоичные данные.
BOOL
и BOOLEAN
?
Bit: Uses 8 bytes and stores only binary data.
неверная информация. Когда вы добавляете битовый столбец в свою таблицу, он будет занимать целый байт в каждой записи, а не только один бит. Когда вы добавляете второй битовый столбец, он будет сохранен в том же байте. Для девятого битового столбца потребуется второй байт памяти.
Я только что заметил одну вещь: со столбцом, определенным как BOOL в MySql, Spring Roo правильно генерирует Java-код для отмены маршалинга значения в логическое значение, поэтому, предположительно, указание BOOL может добавить некоторое значение, даже если это только намек на предполагаемое использование колонки.
проверьте обзор документации MySQL для числовых типов:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html