У чому різниця між типами даних 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 = FALSE 1 = TRUE

TINYINT: займає один байт; коливається від -128 до +127; або, 0 - 256.


Зазвичай виховується в цьому порівнянні: Після MySQL 5.0.3 - біт: використовує 8 байт і зберігає лише двійкові дані.


2
Це насправді не відповідає на питання. Яка різниця між BOOLта BOOLEAN?
ніколи

7
У попередніх публікаціях вже було встановлено, що обидва вони є синонімами TINYINT (1). В ідеалі, наступним запитанням буде "Чому тоді вони розрізняли типи даних?"
шосте,

3
@Sixth, тому Bit: Uses 8 bytes and stores only binary data.це неправильна інформація. Коли ви додаєте стовпець бітів до вашої таблиці, він буде займати цілий байт у кожному записі, а не лише один біт. Коли ви додасте другий бітовий стовпець, він буде зберігатися в тому ж байті. Для стовпця дев’ятого біта буде потрібно другий байт пам’яті.
Колюня

4

Одне, що я щойно помітив, - у стовпці, визначеному як BOOL у MySql, Spring Roo правильно генерує код Java для демаршалізації значення до логічного значення, тому, мабуть, вказівка ​​BOOL може додати деяке значення, навіть якщо це лише характер підказки про цільове використання колони.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.