news
Serverspace добавил возможность подключения S3 к сервису CDN
KA
4 октября 2023
Обновлено 10 октября 2023

Типы данных в MySQL

Debian Базы данных

Введение

Существуют различные области, в которых используются информационные системы, каждая из которых требует эффективной, стабильной и желательно высокой производительности. Но невозможно обрабатывать данные в одном формате, иногда приходится использовать текстовые, числовые сведения или даже кучу смешанной информации. Для этого люди разработали, структуры данных в СУБД. Рассмотрим структуры данных в MySQL и выберем подходящие для различных случаев.

Как выбрать структуры данных?

В официальной документации можно увидеть множество различной информации, но мы можем классифицировать все данные по параметрам: тип, скорость использования данных, занимаемое место хранения и точность содержащихся значений. Каждый из наборов данных имеет свою конфигурацию. При выборе типа данных целесообразно остановиться на наиболее компактном варианте, способном удовлетворить конкретные требования к данным. Такой подход позволяет не только сэкономить место в памяти, но и повысить общую производительность системы.

В случаях, когда длина данных изменяется, например, в описаниях товаров, рекомендуется использовать тип данных переменной длины, например VARCHAR. Для исключительно больших данных, например, видеофайлов, оптимальным вариантом является использование двоичного типа данных LONGBLOB.
Кроме того, при работе с данными, требующими частого поиска или сортировки, важно выбрать тип данных, оптимизированный для этих операций. Например, тип данных CHAR превосходит VARCHAR при эффективном сравнении строк.

Числовые структуры данных

Один из наиболее часто используемых типов данных, представляющий собой различные наборы диапазонов. Это целое число, имеющее 5 типов диапазона использования – от маленького до большого.

Диапазоны целых чисел
Скриншот №1 — Диапазоны целых чисел

Создать столбец с этой структурой можно с помощью нескольких команд:

USE your_database
CREATE TABLE t1 (c1 TINYINT, c2 BIGINT);
Добавим тип данных
Скриншот №2 — Добавим тип данных

Затем введите необходимые данные в таблицу командой, приведенной ниже:

INSERT INTO t1 (c1, c2) VALUES(127, 256);

После этого необходимо убедиться в том, как данные выглядят в таблице. Если вы хотите использовать диапазон без отрицательных чисел, то укажите опцию UNSIGNED.

SELECT c1, c2 FROM t1;
Внесем значения
Скриншот №3 — Внесем значения

Форму или маску таблицы мы можем проверить, набрав эту команду:

DESCRIBE t1;

Обратите внимание! Замените t1 на название вашей таблицы!

Проверим результат
Скриншот №4 — Проверим результат

Атрибут UNSIGNED обладает двумя основными преимуществами:

  • Расширенный диапазон значений: При использовании атрибута UNSIGNED в числовых столбцах можно использовать более широкий спектр значений по сравнению с их подписанными аналогами. Например, столбец UNSIGNED TINYINT допускает значения от 0 до 255, в то время как подписанный столбец TINYINT ограничивается значениями от -128 до 127;
  • Повышенная производительность: Использование числовых столбцов UNSIGNED может повысить эффективность выполнения определенных операций, таких как сортировка и поиск. Это обусловлено тем, что для представления UNSIGNED-числовых столбцов требуется меньше битов, чем для их знаковых аналогов.

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

  • Возможность переполнения: Попытка вставить в числовой столбец UNSIGNED значение, превышающее допустимый диапазон, приведет к переполнению, в результате чего значение будет усечено. Например, вставка 256 в столбец UNSIGNED TINYINT приведет к переполнению и уменьшению значения до 0;
  • Совместимость: Важно отметить, что не все системы баз данных поддерживают атрибут UNSIGNED. Если требуется совместимость с несколькими системами баз данных, то рекомендуется избегать использования атрибута UNSIGNED.

В СУБД для использования этой опции введите:

ALTER TABLE t1 ADD COLUMN c3 INT UNSIGNED;
DESCRIBE t1;
Добавим новый тип данных
Скриншот №5 — Добавим новый тип данных

Рассмотрим эти сценарии в качестве примеров того, когда следует использовать каждый тип данных.

Float:

  • Изображение координат точки на экране;
  • Выражение комнатной температуры;
  • Указание расстояния между двумя городами.

Double:

  • Вычисление финансовых результатов;
  • Запись результатов научных вычислений;
  • Отслеживание положения объектов в трехмерной игровой среде.

Decimal:

  • Управление валютными значениями;
  • Работа с измерениями в инженерных и научных контекстах;
  • Точное выражение процентов.

Integer:

  • Хранение кодов состояния;
  • Хранение значений перечислений;
  • Хранение внешних ключей.

Строчные структуры данных

В MySQL мы можем использовать строковые типы для хранения текстовых данных, но иногда мы не знаем, какой длины они будут. Поэтому существует два типа хранения данных — переменной и фиксированной длины. Один из специфических строковых типов в MySQL — это CHAR, который относится к категории  структур с фиксированной длиной. Когда вы определяете столбец CHAR в таблице базы данных, вы указываете его длину — количество символов, которое он может содержать. Например, если создать столбец CHAR с длиной 10, то в нем всегда будет храниться ровно 10 символов, даже если вы введете меньше.

ALTER TABLE t1 ADD COLUMN string1 CHAR(10);

Затем проверьте результат ввода команды:

DESCRIBE t1;
Добавим строчный тип
Скриншот №6 — Добавим строчный тип
  • VARCHAR, в отличие от CHAR, является строковым типом в MySQL, известным своей переменной длиной. Хотя при создании столбца VARCHAR задается его максимальная длина, фактическая длина столбца может изменяться в зависимости от хранимых в нем данных. В качестве примера можно привести следующий оператор SQL, который создает таблицу с колонкой VARCHAR, способной содержать максимум 100 символов. Система настраивается так же, как и любой тип, описанный выше;
  • TINYTEXT: TINYTEXT, предназначенный для относительно кратких текстовых записей, вмещает до 255 символов. Он может быть использован в сценариях с краткими текстовыми описаниями или названиями;
  • TEXT: TEXT предназначен для размещения более содержательного текстового контента и вмещает до 65 535 символов. Его часто выбирают для размещения длинных текстовых отрывков, таких как статьи, комментарии или документы;
  • MEDIUMTEXT: Для еще более крупных текстовых массивов подходит MEDIUMTEXT, вмещающий до 16 777 215 символов. Этот тип подходит для хранения обширного текстового контента, в том числе объемных документов и обширной текстовой информации;
  • LONGTEXT: LONGTEXT — самый емкий тип строк переменной длины в MySQL, вмещающий до 4 294 967 295 символов. Его применение идеально для работы с очень длинными текстовыми данными, включающими обширные документы или большие наборы данных.

Гибкость, присущая переменным типам строк, проявляется в эффективном использовании пространства для хранения данных, динамически адаптируясь для размещения текста различной длины. Такая адаптивность делает их незаменимыми в различных приложениях, где текстовое содержимое существенно изменяется по длине.

Другие структуры данных

MySQL включает двоичные типы данных, специально предназначенные для хранения двоичных данных, таких как изображения, аудиоклипы и видеофайлы, в их необработанном, некодированном и несжатом виде. Ниже приводится краткий обзор этих двоичных типов:

  • TINYBLOB: предназначен для двоичных полей длиной до 255 байт;
  • BLOB: предназначен для двоичных полей с максимальной длиной 65 535 байт;
  • MEDIUMBLOB: подходит для двоичных полей длиной до 16 777 215 байт;
  • LONGBLOB: идеально подходит для работы с двоичными полями значительного размера, достигающего 4 294 967 295 байт.

MySQL также предоставляет другие типы данных с отдельными функциями:

  • ENUM: предназначен для хранения значения, выбранного из предопределенного списка параметров. Например, он может быть использован для записи различных цветов, доступных для товара;
  • SET: Резервируется для хранения коллекции значений, выбранных из заранее определенного списка. Например, он может использоваться для документирования различных характеристик, связанных с продуктом;
  • BOOLEAN: Специально для хранения булевых значений, представляющих собой TRUE или FALSE;
  • NULL: используется для хранения значения NULL, означающего, что значение неизвестно или не определено.

Эти разнообразные типы данных позволяют разработчикам баз данных эффективно управлять широким спектром данных – от двоичного содержимого до перечисляемых вариантов и логических флагов.

Вывод

MySQL предлагает богатый набор типов данных для эффективной работы с самой разнородной информацией. Выбор типа данных должен соответствовать конкретным характеристикам и системным требованиям, обеспечивая эффективное хранение и поиск в различных приложениях.

Оценка:
5 из 5
Аverage rating : 5
Оценок: 2
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300

Вам также может быть интересно...