Ключевые слова:sql, mysql, howto, (найти похожие документы)
Date: Mon, 23 Oct 2000 12:18:57 +0400 (MSD)
From: MailList: Perl в примерах
Subject: SQL - Типы полей в MySQL
Типы полей в MySQL
Николай Матковский (matkovsky@ukrpost.net)
MySQL поддерживает большое количество типов полей, которые в общем
можно поделить на три категории - числовые типы, типы дата/время и
строковые. Ниже вы найдете короткие описания всех поддерживаемых MySQL
типов и способы задания типов для полей в таблицах.
В описаниях вы найдете некоторые символы, имеющие не менее
символическое значение. Это M, который означает, что в указанном месте
стоит максимальный размер значения поля, и D, указывающий (для
числовых типов с плавающей точкой) количество разрядов, стоящих после
точки, то есть длина дробной части числа. Квадратные собки ('[' и ']')
указывют на то, что взятый в них параметр не является обязательным и
может быть пропущен. В целом, объявление типа INT([M]) [UNSIGNED]
[ZEROFILL] говорит о том, что при объявлении поля типа INT вы можете
(но не должны) указать максимальный размер поля в скаобках после слова
INT, а также написать параметры ZEROFILL UNSIGNED, о которых дальше.
Вот перечисление всех типов:
Целочисленные типы
TINYINT[(M)][UNSIGNED][ZEROFILL]
Наименьший целочисленный тип. Диапазон значений - -128..127
(в случае INSIGNED - 0..255)
SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
Малый целый тип. Диапазон значений - -32768..32767 и соответственно
0..65535 для беззнакового целого.
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
Средний целый тип. Значения могут быть от -8388608 до 8388607 и
от 0 до 16777215 при указании UNSIGNED.
INT[(M)] [UNSIGNED] [ZEROFILL] (INTEGER[(M)] [UNSIGNED] [ZEROFILL])
Обычный целый тип. Значения - -2147483648..2147483647 и 0..4294967295
для беззнакового целого.
BIGINT[(M)] [UNSIGNED] [ZEROFILL]
Большой целочисленный тип. Значения лежат в пределах
от -9223372036854775808 до 9223372036854775807 и от 0
до 18446744073709551615 для UNSIGNED. Впрочем, примите к сведению, что
все арифметический действия производятся при помощи BIGINT со знаком,
поэтому не следует пользоваться значениями, большими, чем 9223372036854775807.
Типы чисел с плавающей точкой
FLOAT(разрядность) [ZEROFILL]
Число с плавающей точкой. Не может быть объявлено беззнаковым.
Разрядность может быть <= 24 (чисел с низкой разрядностью) или
от 25 до 53 (для чисел с двойной разрядностью). Аналогами этих двоих
типов являются описанные ниже типа FLOAT и DOUBLE
FLOAT[(M,D)] [ZEROFILL]
Малое число с плавающей точкой. Разрядность не указывается - для этого
типа она считается <= 24. Значения этого типа лежат в границах
от -3.402823466E+38 до -1.175494351E-38, 0 и от 1.175494351E-38 до
3.402823466E+38.
DOUBLE[(M,D)] [ZEROFILL]
Простое число с плавающей точкой (с двойной размерностью). Значения -
от -1.7976931348623157E+308 до -2.2250738585072014E-308, 0 и
от 2.2250738585072014E-308 до 1.7976931348623157E+308 Синонимами к
DOUBLE являются REAL и DOUBLE PRECISION
DECIMAL[(M[,D])] [ZEROFILL]
Unpacked число с плавающей точкой. Unpacked означает то, что значение
хранится в строке, по символу на каждый разряд числа, точку и знак.
Диапазон значений этого типа такой же, как и у DOUBLE.
Синоним к DECIMAL - NUMERIC.
Типы даты/времени
DATE
Тип для хранения даты. Допустимые значения - от '1000-01-01' до
'9999-12-31'. Дата хранится в виде YYYY-MM-DD.
DATETIME
Комбинация даты и времени. Допустимые значения - от
'1000-01-01 00:00:00' до '9999-12-31 23:59:59'. Данные зранятся в виде
'YYYY-MM-DD HH:MM:SS'.
TIMESTAMP[(M)]
Еще одна дата. Значения лежат в диапазоне от
'1970-01-01 00:00:00' до некоторого времени в 2037-году. В зависимости
от значения параметра M формат хранения данных может быть
YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD или YYMMDD
(значения 14, 12, 8 или 6). По умолчанию в поля такого типа значения
заносятся с текщими датой и временем.
TIME
Время. Значения могут лежать в границах '-838:59:59'..'838:59:59'
и представляются в формате 'HH:MM:SS'.
YEAR[(2 или 4)] Хранит год. В зависимости от значения указанного в
скобках (по умолчанию - 4), год хранится в виде YYYY или YY.
Строковые типы
[NATIONAL] CHAR(M) [BINARY]
Строка, всегда имеющая длину M (в случае, когда занесенное значение
короче, оно дополняется пробелами). M может лежать в пределах от 1 до
255. Приставка NATIONAL указывет на необходимость использования кодовой
таблицы, используемой по умолчанию.
[NATIONAL] VARCHAR(M) [BINARY]
Аналогично посленему, за исключением того, что длина значения может
быть произвольной (от 1 до 255 :), а все пробелы в конце строки
удалаются.
TINYBLOB (TINYTEXT)
Тип BLOB или TEXT, длиной от 1 до 255 символов.
BLOB (TEXT)
Тип BLOB или TEXT, длиной от 1 до 65535 символов.
MEDIUMBLOB (MEDIUMTEXT)
Тип BLOB или TEXT, длиной от 1 до 16777215 символов.
LONGBLOB (LONGTEXT)
Тип BLOB или TEXT, длиной от 1 до 4294967295 символов.
Дополнительные типы
ENUM('значение1', 'значение2', ...)
Перечислимый тип - тип, значения которого строго определены
(списком в скобках). Допустимое количество значений - от 1 до 65535.
SET('значение1', 'значение2', ...)
Набор (множество) - тип, значения которого могут быть множествами,
состоящими из элементов, указаных в скобках. Каждое множество может
иметь не больше 64 элементов.
помогите, пожалуйста. А какой тип поля необходимо выставить в MySQL, чтобы туда можно было заносить фотографии или как это можно сделать? У меня форум, текст записывается и там тип поля TEXT... А если поле для вставки фото? Какой тип?
>помогите, пожалуйста. А какой тип поля необходимо выставить в MySQL, чтобы туда
>можно было заносить фотографии или как это можно сделать? У меня
>форум, текст записывается и там тип поля TEXT... А если поле
>для вставки фото? Какой тип?
а зачем фото кидать в БД? проще хранить ссылки на мультимедийные файлы, которые apache будет выдавать при пользовательском запросе (файлы хранить за пределами БД). часто такие советы дают в статьях по оптимизации работы СУБД (может быть я неправильно понял вопрос?)
Добрый вечер! ПОмогите ,пожалуйста. Чтобы в форму вставить чекбокс, мне нужно логический тип (результат true или false).В Mysql этот тип кажется нету. Какой тип можно вставить?
возьми unsigned tinyint c длинной значения 1 и при проверке проверяй не на true/false, а на 1/0 соответственно, т.е заменяя true на 1, а false на 0. (это как один из вариантов)
Здравствуйте,спасибо большое за статью,очень хорошо и понятно написано,но я столкнулась со следующей проблемой:
"Все данные должны храниться в реляционной базе данных MySQL
Связанные файлы – файлы, необходимые для работы с данной задачей. Выбираются с жесткого диска пользователя или из библиотеки документов узла."
Следовательно мне нужно как-то разместить сами эти файлы в поле,это возможно?