Яка користь від використання BOOLEAN над TINYINT (1)?


16

З посібника з MySQL написано:

БУЛЬ, БУЛЕЙ

Ці типи є синонімами TINYINT (1). Значення нуля вважається помилковим. Ненульові значення вважаються істинними:

Я створив стовпець BOOLEAN з 0значенням за замовчуванням. Потім я поновлюю значення на 2. Логічно, я би очікував, що MySQL прийме або будь-який, 0або 1оскільки він є логічним. Однак MySQL не видав помилку чи не заважав мені виконувати оновлення.

Якщо BOOLEAN працює точно так само, як TINYINT (1), чи має це значення, чи я використовую TINYINT (1) або BOOLEAN?

Відповіді:


11

Ці два справді є синонімами, тому ви можете використовувати їх взаємозамінно. Ви не побачите різниці між ними.

Якщо ви хочете дозволити лише 0 і 1, ви все одно можете використовувати bitтип.


1
@QuestionOverflow Майте на увазі, що BITце дійсно трохи поле, яке компактно містить один-шістдесят чотири біти.
Девід Харкнес

2

Якщо ви працюєте з іншими людьми (або ви хочете нагадати про себе), ви можете скористатися типом даних, BOOLEANщоб припустити, що дані мають на меті значення 1 або 0.


0

Мені здається, справді є різниця.

У таблиці, яку я використовую, у мене стовпець, визначений як мініатюра з індексом на стовпці. Коли я викликаю наступний запит "Пояснити вибір * з таблиці, де стовпець є істинним", це вказує на те, що він буде читати всі рядки таблиці (стовпці "можливі_кільки" та "ref" є нульовими, незважаючи на стовпець "ключ", що показує покажчик).

Змінивши запит на "пояснити вибір * з таблиці, де стовпець = 1", індекс вводиться правильно, при цьому "стовпці" можливі клавіші та "ref" присвоюються значення, а "рядки" встановлюються на набагато меншу кількість.

Я також спробував замінити "true" на "false", а 1 - на 0 і отримав порівнянні результати.

Зробивши це на крок далі, я перейшов з крихітного на інт, і це не мало значення.

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