В чем разница между типами данных столбцов MySQL BOOL и BOOLEAN?

88

Я использую MySQL версии 5.1.49-1ubuntu8.1. Это позволяет мне определять столбцы двух разных типов данных: BOOLи BOOLEAN. В чем разница между двумя типами?

икостия
источник

Ответы:

136

Оба они являются синонимами TINYINT (1) .

Адам Пракс
источник
11
Что говорит Адам. В MySQL нет фактического типа BOOLEAN.
Mchl
25

Как установлено в других комментариях, они являются синонимами 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 байтов и хранит только двоичные данные.

Шестой
источник
2
Это не совсем ответ на вопрос. В чем разница между BOOLи BOOLEAN?
nalply
7
В более ранних сообщениях уже было установлено, что оба являются синонимами TINYINT (1). В идеале следующим вопросом было бы: «Почему же тогда они различают типы данных?»
Sixthfore
3
@Sixthfore Bit: Uses 8 bytes and stores only binary data.неверная информация. Когда вы добавляете битовый столбец в свою таблицу, он будет занимать целый байт в каждой записи, а не только один бит. Когда вы добавляете второй битовый столбец, он будет сохранен в том же байте. Для девятого битового столбца потребуется второй байт памяти.
Колюня
4

Я только что заметил одну вещь: со столбцом, определенным как BOOL в MySql, Spring Roo правильно генерирует Java-код для отмены маршалинга значения в логическое значение, поэтому, предположительно, указание BOOL может добавить некоторое значение, даже если это только намек на предполагаемое использование колонки.

SimonY
источник