Учебники

MySQL – типы данных

Правильное определение полей в таблице важно для общей оптимизации вашей базы данных. Вы должны использовать только тот тип и размер поля, которые вам действительно нужны. Например, не определяйте поле шириной 10 символов, если вы знаете, что собираетесь использовать только 2 символа. Эти типы полей (или столбцов) также называются типами данных после типа данных, которые вы будете хранить в этих полях.

MySQL использует много разных типов данных, разбитых на три категории:

  • числовой
  • Дата и время
  • Типы строк.

Давайте теперь обсудим их подробно.

Числовые типы данных

MySQL использует все стандартные числовые типы данных ANSI SQL, поэтому, если вы переходите на MySQL из другой системы баз данных, эти определения будут вам знакомы.

В следующем списке показаны распространенные числовые типы данных и их описания.

  • INT – целое число нормального размера, которое может быть подписано или не подписано. Если подписано, допустимый диапазон составляет от -2147483648 до 2147483647. Если не подписан, допустимый диапазон составляет от 0 до 4294967295. Можно указать ширину до 11 цифр.

  • TINYINT – очень маленькое целое число, которое может быть подписано или не подписано. Если подписано, допустимый диапазон составляет от -128 до 127. Если без знака, допустимый диапазон составляет от 0 до 255. Можно указать ширину до 4 цифр.

  • SMALLINT – небольшое целое число, которое может быть подписано или не подписано. Если подписано, допустимый диапазон составляет от -32768 до 32767. Если не подписан, допустимый диапазон составляет от 0 до 65535. Можно указать ширину до 5 цифр.

  • MEDIUMINT – целое число среднего размера, которое может быть подписано или не подписано. Если подписано, допустимый диапазон составляет от -8388608 до 8388607. Если не подписан, допустимый диапазон составляет от 0 до 16777215. Вы можете указать ширину до 9 цифр.

  • BIGINT – большое целое число, которое может быть подписано или не подписано. Если подписано, допустимый диапазон составляет от -9223372036854775808 до 9223372036854775807. Если он не подписан, допустимый диапазон составляет от 0 до 18446744073709551615. Можно указать ширину до 20 цифр.

  • FLOAT (M, D) – число с плавающей точкой, которое не может быть без знака. Вы можете определить длину дисплея (M) и количество десятичных знаков (D). Это не обязательно и по умолчанию будет 10,2, где 2 – количество десятичных знаков, а 10 – общее количество цифр (включая десятичные дроби). Десятичная точность может идти до 24 мест для FLOAT.

  • DOUBLE (M, D) – число с плавающей запятой двойной точности, которое не может быть без знака. Вы можете определить длину дисплея (M) и количество десятичных знаков (D). Это не обязательно и по умолчанию будет 16,4, где 4 – количество десятичных знаков. Десятичная точность может пойти в 53 места для ДВОЙНОГО. REAL является синонимом для DOUBLE.

  • DECIMAL (M, D) – неупакованное число с плавающей точкой, которое не может быть без знака. В распакованных десятичных числах каждое десятичное число соответствует одному байту. Требуется определить длину отображения (M) и количество десятичных знаков (D). NUMERIC – это синоним DECIMAL.

INT – целое число нормального размера, которое может быть подписано или не подписано. Если подписано, допустимый диапазон составляет от -2147483648 до 2147483647. Если не подписан, допустимый диапазон составляет от 0 до 4294967295. Можно указать ширину до 11 цифр.

TINYINT – очень маленькое целое число, которое может быть подписано или не подписано. Если подписано, допустимый диапазон составляет от -128 до 127. Если без знака, допустимый диапазон составляет от 0 до 255. Можно указать ширину до 4 цифр.

SMALLINT – небольшое целое число, которое может быть подписано или не подписано. Если подписано, допустимый диапазон составляет от -32768 до 32767. Если не подписан, допустимый диапазон составляет от 0 до 65535. Можно указать ширину до 5 цифр.

MEDIUMINT – целое число среднего размера, которое может быть подписано или не подписано. Если подписано, допустимый диапазон составляет от -8388608 до 8388607. Если не подписан, допустимый диапазон составляет от 0 до 16777215. Вы можете указать ширину до 9 цифр.

BIGINT – большое целое число, которое может быть подписано или не подписано. Если подписано, допустимый диапазон составляет от -9223372036854775808 до 9223372036854775807. Если он не подписан, допустимый диапазон составляет от 0 до 18446744073709551615. Можно указать ширину до 20 цифр.

FLOAT (M, D) – число с плавающей точкой, которое не может быть без знака. Вы можете определить длину дисплея (M) и количество десятичных знаков (D). Это не обязательно и по умолчанию будет 10,2, где 2 – количество десятичных знаков, а 10 – общее количество цифр (включая десятичные дроби). Десятичная точность может идти до 24 мест для FLOAT.

DOUBLE (M, D) – число с плавающей запятой двойной точности, которое не может быть без знака. Вы можете определить длину дисплея (M) и количество десятичных знаков (D). Это не обязательно и по умолчанию будет 16,4, где 4 – количество десятичных знаков. Десятичная точность может пойти в 53 места для ДВОЙНОГО. REAL является синонимом для DOUBLE.

DECIMAL (M, D) – неупакованное число с плавающей точкой, которое не может быть без знака. В распакованных десятичных числах каждое десятичное число соответствует одному байту. Требуется определить длину отображения (M) и количество десятичных знаков (D). NUMERIC – это синоним DECIMAL.

Типы даты и времени

Типы данных даты и времени MySQL:

  • ДАТА – дата в формате ГГГГ-ММ-ДД, между 1000-01-01 и 9999-12-31. Например, 30 декабря 1973 года будет храниться как 1973-12-30.

  • DATETIME – комбинация даты и времени в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС, между 1000-01-01 00:00:00 и 9999-12-31 23:59:59. Например, 3:30 дня 30 декабря 1973 года будет храниться как 1973-12-30 15:30:00.

  • TIMESTAMP – отметка времени между полуночью 1 января 1970 г. и примерно 2037 г. Это похоже на предыдущий формат DATETIME, только без дефисов между числами; 3:30 во второй половине дня 30 декабря 1973 г. будет сохранено как 19731230153000 (ГГГГММДДЧЧММСС).

  • ВРЕМЯ – сохраняет время в формате ЧЧ: ММ: СС.

  • ГОД (М) – Сохраняет год в двухзначном или четырехзначном формате. Если длина указана как 2 (например, ГОД (2)), ГОД может быть между 1970 и 2069 (70-69). Если длина указана как 4, то ГОД может быть от 1901 до 2155. Длина по умолчанию – 4.

ДАТА – дата в формате ГГГГ-ММ-ДД, между 1000-01-01 и 9999-12-31. Например, 30 декабря 1973 года будет храниться как 1973-12-30.

DATETIME – комбинация даты и времени в формате ГГГГ-ММ-ДД ЧЧ: ММ: СС, между 1000-01-01 00:00:00 и 9999-12-31 23:59:59. Например, 3:30 дня 30 декабря 1973 года будет храниться как 1973-12-30 15:30:00.

TIMESTAMP – отметка времени между полуночью 1 января 1970 г. и примерно 2037 г. Это похоже на предыдущий формат DATETIME, только без дефисов между числами; 3:30 во второй половине дня 30 декабря 1973 г. будет сохранено как 19731230153000 (ГГГГММДДЧЧММСС).

ВРЕМЯ – сохраняет время в формате ЧЧ: ММ: СС.

ГОД (М) – Сохраняет год в двухзначном или четырехзначном формате. Если длина указана как 2 (например, ГОД (2)), ГОД может быть между 1970 и 2069 (70-69). Если длина указана как 4, то ГОД может быть от 1901 до 2155. Длина по умолчанию – 4.

Типы строк

Хотя числовой тип и тип даты являются забавными, большинство данных, которые вы будете хранить, будут в строковом формате. Этот список описывает общие типы данных строки в MySQL.

  • CHAR (M) – строка фиксированной длины длиной от 1 до 255 символов (например, CHAR (5)), дополненная справа пробелами до указанной длины при сохранении. Определение длины не требуется, но по умолчанию 1.

  • VARCHAR (M) – строка переменной длины длиной от 1 до 255 символов. Например, VARCHAR (25). Вы должны определить длину при создании поля VARCHAR.

  • BLOB или TEXT – поле длиной не более 65535 символов. BLOB – это «большие двоичные объекты», которые используются для хранения больших объемов двоичных данных, таких как изображения или другие типы файлов. Поля, определенные как ТЕКСТ, также содержат большие объемы данных. Разница между ними заключается в том, что сортировки и сравнения сохраненных данных чувствительны к регистру на BLOB и не чувствительны к регистру в полях TEXT. Вы не указываете длину с BLOB или TEXT.

  • TINYBLOB или TINYTEXTстолбец BLOB или TEXT, максимальная длина которого составляет 255 символов. Вы не указываете длину с TINYBLOB или TINYTEXT.

  • MEDIUMBLOB или MEDIUMTEXTстолбец BLOB или TEXT, максимальная длина которого составляет 16777215 символов. Вы не указываете длину с MEDIUMBLOB или MEDIUMTEXT.

  • LONGBLOB или LONGTEXTстолбец BLOB или TEXT, максимальная длина которого 4294967295 символов. Вы не указываете длину с LONGBLOB или LONGTEXT.

  • ENUM – перечисление, которое является необычным термином для списка. При определении ENUM вы создаете список элементов, из которых необходимо выбрать значение (или оно может быть NULL). Например, если вы хотите, чтобы ваше поле содержало «A», «B» или «C», вы должны определить свой ENUM как ENUM («A», «B», «C») и только эти значения (или NULL). мог когда-нибудь заполнить это поле.

CHAR (M) – строка фиксированной длины длиной от 1 до 255 символов (например, CHAR (5)), дополненная справа пробелами до указанной длины при сохранении. Определение длины не требуется, но по умолчанию 1.

VARCHAR (M) – строка переменной длины длиной от 1 до 255 символов. Например, VARCHAR (25). Вы должны определить длину при создании поля VARCHAR.

BLOB или TEXT – поле длиной не более 65535 символов. BLOB – это «большие двоичные объекты», которые используются для хранения больших объемов двоичных данных, таких как изображения или другие типы файлов. Поля, определенные как ТЕКСТ, также содержат большие объемы данных. Разница между ними заключается в том, что сортировки и сравнения сохраненных данных чувствительны к регистру на BLOB и не чувствительны к регистру в полях TEXT. Вы не указываете длину с BLOB или TEXT.

TINYBLOB или TINYTEXTстолбец BLOB или TEXT, максимальная длина которого составляет 255 символов. Вы не указываете длину с TINYBLOB или TINYTEXT.

MEDIUMBLOB или MEDIUMTEXTстолбец BLOB или TEXT, максимальная длина которого составляет 16777215 символов. Вы не указываете длину с MEDIUMBLOB или MEDIUMTEXT.

LONGBLOB или LONGTEXTстолбец BLOB или TEXT, максимальная длина которого 4294967295 символов. Вы не указываете длину с LONGBLOB или LONGTEXT.

ENUM – перечисление, которое является необычным термином для списка. При определении ENUM вы создаете список элементов, из которых необходимо выбрать значение (или оно может быть NULL). Например, если вы хотите, чтобы ваше поле содержало «A», «B» или «C», вы должны определить свой ENUM как ENUM («A», «B», «C») и только эти значения (или NULL). мог когда-нибудь заполнить это поле.

В следующей главе мы обсудим, как создавать таблицы в MySQL.