В некоторых случаях MySQL без уведомления изменяет определение столбца,
заданное командой CREATE TABLE (Это может осуществляться также для
команды ALTER TABLE):
Столбец
VARCHARс длиной меньше, чем четыре, преобразуется в столбецCHAR.Если некоторый столбец в таблице имеет переменную длину, то и вся строка в результате будет переменной длины. Следовательно, если таблица содержит любые столбцы переменной длины (
VARCHAR,TEXTилиBLOB), то все столбцыCHARс длиной, превышающей три символа, преобразуются в столбцыVARCHAR. Это в любом случае не влияет на использование столбцов; в MySQL столбецVARCHARпредставляет собой просто иной способ хранения символов. MySQL выполняет данное преобразование, поскольку оно позволяет сэкономить память и сделать табличные операции более быстрыми. See Глава 7, Типы таблиц MySQL.Количество выводящихся символов столбца
TIMESTAMPдолжно быть четным и находиться в диапазоне от2до14. При задании размера вывода, равного0или превышающего14, указанный размер приводится к14. Нечетные величины размера вывода в пределах от1до13приводятся к следующему четному числу.В столбце
TIMESTAMPне может храниться литералNULL; установка данного столбца вNULLустанавливает его в текущее значение даты и времени. Поскольку столбцыTIMESTAMPведут себя подобным образом, то атрибутыNULLиNOT NULLнеприменимы в обычном режиме и игнорируются при их задании.DESCRIBE tbl_nameвсегда сообщает, что столбцуTIMESTAMPмогут быть присвоены величиныNULL.MySQL приводит в соответствие определенные типы столбцов, используемые другими производителями баз данных SQL, к типам, принятым в MySQL. See Раздел 6.2.5, «Использование типов столбцов из других баз данных».
Если необходимо увидеть, использует ли MySQL иной тип столбца, чем был
первоначально задан, следует запустить команду DESCRIBE tbl_name после
создания или изменения данной таблицы.
Некоторые другие изменения типов столбцов могут происходить при сжатии
таблицы с использованием утилиты myisampack. See Раздел 7.1.2.3, «Характеристики сжатых таблиц».