Читайте также:
|
|
Для строковых типов данных максимальный размер и требования к памяти приведены в табл. 3. Здесь L— это длина хранимой в ячейке строки, а байты, приплюсованные к L, — накладные расходы для хранения длины строки.
Таблица 3. Строковые типы данных
Тип CHAR позволяет хранить строку фиксированной длины М, его дополняет тип VARCHAR, позволяющий хранить переменные строки длиной L. Значение М может принимать значения от 0 до 65535.
Замечание
До версии MySQL 5.0.3 значение м для типов char и varchar могло принимать значения только от 0 до 255.
При выборе строкового типа данных для столбца следует принимать во внимание, что для переменных строк VARCHAR требуется количество символов, равное длине строки плюс один байт, в то время как тип CHAR(M), независимо от длины строки, использует для ее хранения все М символов. В то же время тип CHAR обрабатывается эффективнее переменных типов, т.к. всегда заранее известно, где заканчивается очередной блок данных. Сравнение типов CHAR и VARCHAR приведено в табл. 4.
Таблица 4. Сравнение типов CHAR и VARCHAR
При создании таблицы нельзя смешивать столбцы типа CHAR и VARCHAR. Если такое происходит, СУБД MySQL изменит тип столбцов согласно правилу: в случае, когда в таблице присутствует хоть один столбец переменной длины, все столбцы типа CHAR приводятся к типу VARCHAR.
Замечание
Начиная с версии 4,1.2, типы CHAR и VARCHAR рассматривают строки как последовательности символов. Это означает, что при использовании многобайтных кодировок, например UNICODE, размер строки в байтах будет больше, чем в символах. Для совместимости со старыми версиями в MySQL введены два специальных типа: BINARY и VARBINARY, которые эквивалентны типам CHAR и VARCHAR, но строка в них рассматривается как последовательность байтов, а не символов. К BiNARY-строкам не применимы кодировки и сортируются они как обычные последовательности байтов.
Типы BLOB и TEXT в СУБД MySQL во всем аналогичны и отличаются только в деталях. Например, при выполнении операций над столбцами типа text учитывается кодировка, а типа BLOB — нет.
Тип TEXT обычно используется для хранения больших объемов текста, в то время как BLOB — для больших двоичных объектов, таких как электронные документы, изображения, звуки и т. д.
К особым типам данных относятся ENUM и SET. Строки этих типов принимают значения из заранее заданного списка допустимых значений. Основное различие между ними заключается в том, что значение типа ENUM должно содержать точно одно значение из указанного множества, тогда как столбцы SET могут содержать любой или все элементы заранее заданного множества одновременно. Так, значения для столбца, объявленного как ENUM('у','n'), могут принимать только два значения: либо 'у', либо 'n'.
Для типа SET, так же как и для типа ENUM, при объявлении задается список возможных значений, но ячейка может принимать любое значение из списка, а пустая строка означает, что ни один из элементов списка не выбран. Например, значения для столбца SET(‘y’, ‘n’) могут принимать значения ('у','n'), (‘у'), ('n') и пустое множество ().
Типы ENUM и SET можно назвать строковыми лишь отчасти, т. к. при объявлении они задаются списком строк, но во внутреннем представлении базы данных элементы множеств сохраняются в виде чисел. Элементы типа ENUM нумеруются последовательно, начиная с 1. В зависимости от числа элементов в списке под столбец может отводиться 1 байт (до 256 элементов в списке) или 2 байта (от 257 до 65536 элементов в списке).
Элементы множества SET обрабатываются как биты, размер типа при этом также определяется числом элементов в списке: 1 байт (от 1 до 8 элементов), 2 байта (от 9 до 16 элементов), 3 байта (от 17 до 24 элементов), 4 байта (от 25 до 32 элементов) и 8 байт (от 33 до 64 элементов).
Дата добавления: 2015-07-20; просмотров: 74 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Числовые данные | | | Календарные данные |