Поле в таблице определено как CHAR(x) или VARCHAR(x), что позволяет хранить x символов в каждой записи.
Каков минимальный размер x?
Каков максимальный размер x?
Показать ответ
Ответ: Если вы решите создать поле типа VARCHAR/CHAR
минимального размера, вы скорей всего не сделаете его UNIQUE. Минимальным значением x является 0 (ноль), что позволяет хранить только пустую строку. Очень удобно, не так ли?
На самом деле существует причина
* создавать такие поля: если вы хотите создать компактную таблицу с двоичными значениями (TRUE/FALSE), вы можете использовать это тип. Тогда если запись будет содержать пустую строку, то это будет эквивалентно TRUE, а если NULL - FALSE. Таким образом вы будете расходовать только один бит
**.
Максимальный размер поля типа CHAR составляет 250 символов. А максимальный размер VARCHAR - 65535. Однако это ограничено максимальным размером записи, в котором учитываются все поля
***, и который может не превышать 65535. Для однобайтовых наборов символов эта граница лежит где-то под 64k, а для UTF-8 - мнее 21k.
* Я сказал “прична”, а не “хороший повод”.
** NULL-биты хранятся в байтовом массиве и первое NULL-поле занимает один байт. Остальные 7 дополнительно не расходуют память. Это в теории. Но как говорит Monty - на самом деле всё несколько сложней.
*** Как мы видели в
Quiz #21, TEXT и BLOB поля занимают всего по несколько байт.
Опубликовано с разрешения Carsten Pedersen. Оригинал