DataLife Engine > PHP > Какие типы данных поддерживает Mysql?
Какие типы данных поддерживает Mysql?28 октября 2007. Разместил: podpole |
Я не буду описывать подробно все изобилие типов mysql. Я уверен, что это лишнее.
Дело в том, что в mysql-е числовые и текстовые группы типов очень многочисленны. Отличаются типы в этих группах размером в байтах и возможными модификаторами. Подробности можно посмотреть в мануале в директории docs каталога с mysql-ем в разделе "7.3 column types". Там и английский знать особо не нужно - смотрите на название и цифры длины! ;) Здесь я сделаю обзор самих групп типов данных - для быстрого введение. mysql поддерживает следующие типы/группы типов данных: Числовые. Возможные модификаторы: unsigned для объявления беззнаковости, zerofill для заполнения лидирующих пробелов нулями (имеется в виду внешний вид при выводе). Могут быть созданы как целые (tinyint, smallint, int, bigint и пр.), так и числа с плавающей точкой (float, double, real и пр.). Строковые. Возможные модификаторы: binary для объявления поля как бинарного (любые коды хранимых символов), national - модификатор по умолчанию, - использование набора символов для сортировки, сравнения и пр. Занятный модификатор. Отвечает за конструкцию set-группы: set character set character_set_name | default, где character_set_name может принимать значение cp1251_koi8. Однако эти установки выставлены по умолчанию. Выходит, без модификатора результат тот же, что и с ним. Я так понял, что эти фишки для будущего использования. Модификатор для типа char varying создает строковое поле переменной длины. blob-поля - поля для хранения двоичных данных. Типы данных, не попавшие в предыдущие три группы: timestamp - поле хранит дату и время последнего изменения записи. Это значит, что, добавив в таблицу поле типа timestamp (например, воспользовавшись конструкцией alter table table_name add column column_name timestamp), Вы, не производя никаких изменений поля типа timestamp, будете в нем иметь время последней операции с записью, влияющей на содержимое строки таблицы. date, time, datetime - поля хранения даты, времени, и того, и другого. Тут, я думаю все ясно. year - поле, добавленное в версии 3.22, - для хранения года в интервале с 1901 по 2155. enum - поле, хранящее одно из значений, указанных в списке при создании (модификации структуры) таблицы, например, alter table tab_name add column col_enum enum('Ага', 'Угу', 'Ну его нафиг'). Теперь поместить в поле col_enum одно из перечисленных значений можно так: insert into tab_name set col_enum='Ага' или update tab_name set col_enum=3. В последнем случае в col_enum будет значение 'Ну его нафиг'. Присвоение полю значения не из списка (например, col_enum=7 или col_enum=' format c:') запишет в поле пустую строку (даже не 'null'). тип set в отличии от типа enum предназначен для хранения списка значений, например, alter table tab_name add column col_set set ('один','два','три','четыре') Теперь изменим значение поля: update tab_name set col_set='один' where поле=значение После такого запроса col_set будет содержать значение 'один'. update tab_name set col_set=15 Здесь col_set содержит значение 'один,два,три,четыре'. Да, именно строку с set-значениями, разделенными запятыми. Цифра 15 - это двоичное 1111. Каждый бит отвечает за свое значение в списке. Например: 1 - 'del', 10 - 'file1.txt', 11 - 'del,file1.txt' и т.д. Как и в случае с enum установка недопустимого значения записывает в поле пустую строку. |