Я використовую 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 = FALSE 1 = TRUE
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