MySQL: установка, настройка, описание - Типы данных (в колонках)
ОГЛАВЛЕНИЕ
Страница 12 из 16
Типы данных (в колонках)
M - ширина поля при отображении (максимально - 255). D - число знаков в дробной части (не более M-2 и 30).
- Числовые (если число занимает меньше M позиций, то оно дополняется слева пробелами или нулями для ZEROFILL. Если число занимает более M колонок, то выводятся все цифры. Если используется ZEROFILL для целых, то автоматически добавляется UNSIGNED). Все вычисления проводятся с точностью 63 бита или переводом в DOUBLE (кроме нескольких функций).
- TINYINT[(M)] [UNSIGNED[ [ZEROFILL] (1 байт)
- SMALLINT[(M)] [UNSIGNED[ [ZEROFILL] (2 байта)
- MEDIUMINT[(M)] [UNSIGNED[ [ZEROFILL] (3 байта)
- INT[(M)] [UNSIGNED[ [ZEROFILL] (4 байта)
- INTEGER[(M)] [UNSIGNED] [ZEROFILL] (4 байта)
- BIGINT[(M)] [UNSIGNED] [ZEROFILL] (8 байт)
- FLOAT[(M,D)] [ZEROFILL] (4 байта)
- DOUBLE [PRECISION][(M,D)] [ZEROFILL]
- REAL[(M,D)] [ZEROFILL] (синоним DOUBLE)
- DECIMAL[(M[,D])] [ZEROFILL] (неупакованное десятичное вещественное число)
- DEC - синоним DECIMAL
- NUMERIC[(M[,D])] [ZEROFILL] (синоним DECIMAL)
- Дата и время (проверка значений не очень тщательная, например, дата 1999-11-31 будет воспринята нормально; допусимы номер дня, равный нулю, и номера месяца И дня равные нулю; неверное значение преобразуется в "нулевое" - 0000-00-00 и т.д.; заносить можно как строки с разделителями полей - любыми -, так и без разделителей или числа)
- DATE (дата от '1000-01-01' до '9999-12-31'; 3 байта)
- DATETIME (время от '1000-01-01 00:00:00' до '9999-12-31 23:59:59'; 8 байт)
- TIMESTAMP[(M)] (время от 19700101000000 до 2037 года; 4 байта; если при INSERT или UPDATE (должны быть реальные изменения) значение опущено (только первая колонка этого типа) или равно NULL или NOW(), то заносится текущее время; формат выдачи зависит от M (хранится всегда все; задавать надо тоже все):
- 14 (по умолчанию) - YYYYMMDDHHMMSS
- 12 - YYMMDDHHMMSS
- 8 - YYYYMMDD
- 6 - YYMMDD
- TIME (время от -838:59:59 до 838:59:59; выводится как HH:MM:SS; 3 байта; можно вводить как 'D HH:MM:SS.fraction', хотя доли пока не хранятся)
- YEAR[(2|_4_)] (от 1901 до 2155 или от 1970 до 2069; 1 байт)
- Строки (в MySQL CHAR всегда NATIONAL; надо учитывать, что максимальная длина строки таблицы и пакета протокола клиент/сервер - 16 МБ - и надо увеличить размер каких-то буферов как сервера, так и клиента; VARCHAR, BLOB и TEXT - строки переменной длины; BINARY - навязчивый атрибут, т.е. если операнд выражения - BINARY, то все выражение - BINARY; TEXT - это BLOB, который сортируется и сравнивается в нечувствительной к регистру манере; TEXT можно рассматривать как VARCHAR нужного размера, а BLOB можно рассматривать как VARCHAR BINARY нужного размера, но хвостовые пробелы не удаляются и не м.б. значения по умолчанию; для CHAR и VARCHAR можно индексировать префикс колонки; для BLOB и TEXT обязательно индексировать префикс фиксированной длины; для VARCHAR и TEXT можно создавать индекс специального вида FULLTEXT для индексирования всей колонки; ORDER BY и GROUP BY работают только с объектами фиксированной длины или первыми max_sort_length байтами)
- [NATIONAL] CHAR(M) [BINARY] (фиксированной длины от 1 до 255; дополняется справа пробелами; при извлечении правые пробелы удаляются; сортируются и сравниваются нечувствительно к регистру относительно набора символов по умолчанию, если не указано BINARY; CHAR(0) занимает 1 бит и может принимать два значения - NULL и "")
- NCHAR - синоним NATIONAL CHAR
- CHARACTER - синоним CHAR
- [NATIONAL] VARCHAR(M) [BINARY] (строка переменной длины от 1 до 255; правые пробелы удаляются при сохранении; сортируются и сравниваются нечувствительно к регистру относительно набора символов по умолчанию, если не указано BINARY)
- CHARACTER VARYING - синоним VARCHAR
- TINYBLOB (BLOB макс. длины 255)
- TINYTEXT (TEXT макс. длины 255)
- BLOB (BLOB макс. длины 65535)
- TEXT (TEXT макс. длины 65535)
- MEDIUMBLOB (BLOB макс. длины 2^24-1)
- MEDIUMTEXT (TEXT макс. длины 2^24-1)
- LONGBLOB (BLOB макс. длины 2^32-1, в действительности строка таблицы ограничена 16МБ)
- LONGTEXT (TEXT макс. длины 2^32-1)
- ENUM('строка1','строка2',...) (может принимать значение из списка, NULL или "" - как признак ошибки при вставке; не более 65535 различных значений; 1 или 2 байта; если описан как NULL, то по умолчанию вставляется NULL; если описан как NOT NULL, то по умолчанию вставляется первая строка из списка; каждая строка имеет индекс, начиная с 1; индекс "" равен 0; индекс NULL равен NULL; в числовом контексте извлекается индекс, а не строка (как при вставке, так и при извлечении); сортировка производится по индексу; регистр букв не влияет при вставке, но извлекается в том виде, в каком колонка описывалась)
- SET('строка1','строка2',...) (может одновременно принимать от 0 до 64 значений из списка; элемент списка не может содержать запятую; 1, 2, 3, 4 или 8 байт;если значение SET извлекается/устанавливается в числовом контексте, то в числе каждому установленому биту соответствует элемент множества (первый элемент в описании множества соответствует младшему биту); сортируются как числа)