Навигация

Поиск по Сайту

Партнеры

Самоучитель. Книги.

Статистика

    Каталог@Mail.ru - каталог ресурсов интернет

Строковые типы CHAR и VARCHAR в MySQL.

Главная Страница » Книги по PHP » MySQL уроки для начинающих с нуля » Строковые типы CHAR и VARCHAR

Типы в MySQL CHAR и VARCHAR подобны, но отличаются способом их хранения и получения.

Длина столбца CHAR фиксирована и задается одновременно с таблицей. Длина может быть любым значением между 1 и 255. В MySQL 3.23 длина CHAR может быть от 0 до 255. Когда значения CHAR сохраняются в таблице, они дополняются справа пробелами до нужной длины. Когда значения CHAR будут получены из таблицы, конечные пробелы будут автоматически удалены.

Значения в столбцах VARCHAR представляют собой строки переменной длины. Вы можете объявлять, что столбец VARCHAR будет любой длины между 1 и 255, точно как для столбцов типа CHAR. Однако, в отличие от CHAR, значения VARCHAR сохранены с использованием ровно стольких символов, сколько требуется, плюс один байт, чтобы записать длину строки. Значения не дополняются, вместо этого конечные пробелы будут удалены, когда значения будут сохранены в таблице. Это удаление пробелов отличается от спецификации ANSI SQL - там они остаются.

Если вы назначаете значение столбцу CHAR или VARCHAR, которое превышает максимальную длину столбца, значение будет усечено, чтобы поместиться в столбец.

Табл. 5.3 ниже иллюстрирует различия между двумя типами столбцов, показывая результат сохранения различных значений в столбцы типов CHAR(4) и VARCHAR(4):

Таблица 5.3. Разница между CHAR(4) И VARCHAR(4)

Значение CHAR(4) Для хранения надо VARCHAR(4) Для хранения надо
" " " " 4 байта " " 1 байт
"ab" "ab" 4 байта "ab" 3 байт
"abcd" "abcd" 4 байта "abcd" 5 байт
"abcdefgh" "abcd" 4 байта "abcd" 5 байт

Значения, полученные из столбцов CHAR(4) и VARCHAR(4), будут те же самые в каждом случае потому, что конечные пробелы удалены из столбцов CHAR после поиска.

Значения в столбцах CHAR и VARCHAR сортируются и сравниваются без учета регистра, если атрибут BINARY не был определен при создании таблицы. Атрибут BINARY означает, что значения столбца сортируются и сравниваются с учетом регистра согласно порядку символов серверной (не клиентской!) машины MySQL. BINARY никак не воздействует на то, как столбец будет сохранен или получен.

Атрибут BINARY притягивает к себе. Это означает, что, если столбец, отмеченный как BINARY, используется в выражении, все выражение приравнивается к значению BINARY.

MySQL может тихо и незаметно изменять тип столбца CHAR или VARCHAR при создании таблицы. Подробности в разделе 7.3. «Постепенные изменения спецификации столбца».