Типы полей в MySQL
В этой статье мы освятим очень важный вопрос, связанный с тем, какие типы полей в таблицах предоставляет нам MySQL. Ведь не секрет, что записи в таблицах должны соответствовать этим типам. И каждая ячейка записи должна удовлетворять определённым условиям, которые как раз и задаются типом поля в MySQL.
Давайте с Вами по порядку разберём все типы полей в MySQL
1. VARCHAR. Это тип является строковым, причём строкой переменной длины от 0 до 255 символов.
2. TINYINT. Это тип целых чисел. Диапазон значений от -127 до 128, либо 0 до 255, в зависимости от того, может ли это поле быть отрицательным. О том, как это задавать, я расскажу ниже.
3. TEXT (BLOB). Это обычный строковый тип, в котором максимальная длина составляет 65535 символов. Идеальный вариант для хранения текстов статей.
4. DATE. Этот тип отвечает за дату. Формат следующий: "YYYY-MM-DD". Например, такое значение будет удовлетворять этому полю: "2011-01-02".
5. SMALLINT. Также, как и TINYINT - это целый тип данных, но диапазон значений уже побольше: -32768 до 32767, либо от 0 до 65535.
6. MEDIUMINT. Ещё один целый тип, но диапазон значений ещё больше: от -8388608 до 8388607, либо от 0 до 16777215.
7. INT. Самый часто используемый целый тип данных. Его диапазон: от -2147483648 до 2147483647, либо от 0 до 4294967295.
8. BIGINT. Последний целый тип, который используется достаточно редко, так как его диапазон значений особо не востребован: от -9223372036854775808 до 9223372036854775807, либо от 0 до 18446744073709551615.
9. FLOAT. Вещественный тип данных. Точность одинарная, то есть число знаков после запятой может быть не более 24-х. Диапазон значений: от -3,402823466E+38 до -1,175494351E-38, 0, и от 1,175494351E-38 до 3,402823466E+38.
10. DOUBLE. Тот же FLOAT, но с двойной точностью. Количество знаков после запятой может составлять до 53-х. Допустимые значения: от -1,7976931348623157E+308 до -2,2250738585072014E-308, 0, и от 2,2250738585072014E-308 до 1,7976931348623157E+308. В общем, если Вам нужны действительно огромные числа, то DOUBLE - это наилучший выбор.
11. DECIMAL. Редко используемый тип даных, но тем не менее. Это число, похожее на тип DOUBLE, но хранится оно в виде строки. И, фактически, интервал допустимых значений определяется наличием знака "-" и ".". Если эти знаки отсутсвуют, то допустимый интервал такой же, как и у DOUBLE.
12. DATETIME. Тип данных, отвечающих за хранение даты и времени. Формат следующий: "YYYY-MM-DD HH:MM:SS".
13. TIMESTAMP. Определённая временная метка, которая может иметь один из следующих форматов: "YYYYMMDDHHMMSS", "YYMMDDHHMMSS", "YYYYMMDD", "YYMMDD".
14. TIME. Простой тип, отвечающий за время в формате: "HH:MM:SS".
15. YEAR. Тип, отвечающий за год в одном из двух форматов: "YY", "YYYY".
16. CHAR. Строка фиксированной длины. Диапазон состовляет от 0 до 255 символов. При хранении данный тип добавляет к концу строки количество пробелов до заданного размера.
17. TINYTEXT (TINYBLOB). Текст с длиной от 0 до 255 символов.
18. MEDIUMTEXT (MEDIUMBLOB). Текст с длиной от 0 до 16777215 символов.
19. LONGTEXT (LONGBLOB). Текст с длиной от 0 до 4294967295 символов.
20. ENUM. Этот тип содержит список значений. Другими словами, значение соответствующей ячейки записи должно быть выбрано из списка допустимых строковых значений (аналог radiobutton). Максимальное количество значений 65535.
21. SET. Набор значений. Если в ENUM должно быть выбрано только одно, то тут может быть выбрано сразу несколько значений (аналог checkbox). Максимальное количество значений, хранимых в SET - 64.
Вот мы и познакомились со всеми типами полей в MySQL. Как и обещал, рассказываю, как выбрать, какое число будет использоваться: положительное или отрицательное. Для этого есть специальный атрибут UNSIGNED, который если стоит, то число положительное, а если его нет, то число может быть как положительным, так и отрицательным. Впрочем, потом Вы всё поймёте, а пока просто примите это к сведению.
Разумеется, всё это запоминать не нужно. И давайте я сейчас Вам перечислю типы, которые используются очень часто и которые многократно использовал я сам:
- VARCHAR - идеальный тип данных для всяких логинов, паролей, заголовков статей, имён, фамилий и прочего.
- TINYINT - используется для всяких "флагов". Например, активирован пользователь на сайте или нет, заблокирован пользователь на сайте или нет. Также используется для численной оценки прав пользователя. Например, "1" - это Гость, "2" - Зарегистрированный, "3" - Администратор и так далее.
- TEXT - используется для хранения текста, разумеется, используется очень часто.
- INT - самый популярный вариант использования этого типа - это ID (уникального идентификатора), который уникален для каждой записи в таблице.
- DATETIME - используется для хранения даты и времени. Например, можно хранить дату и время отправки сообщения на форуме, дату и время регистрации пользователя и так далее.
- ENUM - используется реже тех, которые я описал выше, но тем не менее. Самый простой пример использования этого типа - это словесное описание прав пользователя: "Гость", "Зарегистрированный", "Администратор".
Как видите, типов полей в MySQL очень много, но используются активно всего 5-6, поэтому всё очень и очень просто.
Удачи!
-
- Михаил Русаков
Комментарии (11):
Михаил, для пятизначных чисел лучше взять SMALLINT?
Ответить
Не все пятизначные в нём поместятся, поэтому лучше взять MEDIUMINT.
Ответить
в тип DATETIME (0000-00-00 00:00:00) это поле заполняется автоматически при совершении например добавления нового пользователя? спасибо
Ответить
Оно заполняется автоматически нулями.
Ответить
Михаил, а что означает при создании таблицы с id мы делаем поле int со значением 11, и как понять диапазон 4294967295 тоесть там могут рассполагаться знечения с 4294967295 значными числами? Сколько раз хотел спросить и всё время забывал
Ответить
11 означает, что максимум будет 11-ти значное число, однако, сейчас mysql поддерживает только 10-ти значные числа для типа int. А число 4294967295 является максимальным пока для типа int. Я же ставлю с запасом 11 просто по привычке, когда-нибудь диапазон увеличат. Но с точки зрения уменьшения размера базы данных, надо ставить не 11, не 10, а ровно столько, сколько потребуется.
Ответить
И ещё вопрос, вы всегда ставите для даты такое же поле, и сейчас время получается с 10 значным числом, но потом то оно увеличится, и как тогда действовать? переставить везде на варчар 15?
Ответить
Это будет не при нашей жизни, пока достаточно и 10-тизначного числа для времени. А потом можно будет использовать BIGINT.
Ответить
Спасибо
Ответить
А есть ли смысл делать длину для varchar меньше чем 255?
Ответить
Спасибо автору за полезные материалы. Перерыл весь интернет и только здесь нашел понятное описание и назначение полей в MySQL
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.