В некоторых случаях 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, «Характеристики сжатых таблиц».