Хранение изображений в MySQL с помощью Navicat
Хранение изображений в MySQL с помощью Navicat Также необходимо различать изображения разных размеров, такие как эскизы, изображения веб-дисплея и т.п. Например, одно приложение, которое я недавно разработал, показывает новости, где у каждой статьи есть миниатюра и изображение основной статьи. Другое приложение показывает логотипы компаний в маленьком и большом размере.В большинстве случаев изображения можно хранить на веб-сервере, а затем ссылаться на них с помощью URL-адреса. Это требует только хранения строки пути в базе данных, а не самого изображения. Однако бывают случаи, когда это невозможно, например, когда у приложения недостаточно прав в файловой системе. В таких случаях вы можете хранить изображения непосредственно в базе данных, а затем загружать их с помощью кода приложения.
Средства разработки и администрирования Navicat обеспечивают превосходную поддержку управления изображениями. В сегодняшнем блоге мы узнаем, как Navicat упрощает процесс хранения изображений.
В MySQL предпочтительным типом данных для хранения изображений является BLOB. Однако на самом деле существует три разновидности BLOB. Тот, который вы выберете, зависит от размера изображений, которые вы будете хранить. Если вы сомневаетесь, перейдите на BLOB большей емкости! Вот три типа BLOB:
- BLOB: Может обрабатывать до 65 535 байт данных.
- MEDIUMBLOB: максимальная поддерживаемая длина составляет 16 777 215 байт.
- LONGBLOB: хранит до 4 294 967 295 байт данных.
Имея это в виду, вот определение таблицы, которое хорошо подходит для миниатюрных изображений, но не намного больше:
Помимо самого изображения, вам может оказаться полезным хранить другую информацию об изображении, такую как идентификатор, имя, описание, размер, тип (JPEG, GIF, BITMAP и т. д.), категория и т. д.
При использовании Navicat нет необходимости писать код SQL для загрузки изображений. Вместо этого вы можете использовать стандартный файловый браузер для поиска и вставки файлов изображений.
Всякий раз, когда вы просматриваете содержимое таблицы в представлении «Сетка или форма», вы можете выбрать, как вы хотите, чтобы Navicat обрабатывал данные, из раскрывающегося списка
Выбор Изображение из раскрывающегося списка добавляет панель предварительного просмотра изображения внизу содержимое таблицы/строки:
Слева от предварительного просмотра файла вы найдете три значка: «Загрузить», «Сохранить на диск» и «Очистить». Чтобы загрузить изображение, просто щелкните значок Загрузить и выберите изображение с помощью стандартного диалогового окна файлового браузера операционной системы. После вставки изображение, а также его размер в байтах появится на панели предварительного просмотра:
В сегодняшнем блоге мы узнали, как хранить изображения в базе данных MySQL 8 с помощью Navicat Premium 15.
Сейчас самое подходящее время для покупки Navicat Premium, так как версия 15 добавляет более 100 улучшений и включает в себя несколько новых функций, которые дадут вам больше возможностей. способы создания, управления и обслуживания ваших баз данных, чем когда-либо прежде!
11.3.4 Типы BLOB и TEXT
11.3.4 Типы BLOB и TEXT
BLOB
BLOB
типы TINYBLOB
, BLOB
, СРЕДНИЙБЛОБ
и ДЛИННЫЙБЛОБ
.
Они отличаются только максимальной длиной значений, которые они могут
держать. Четыре типа TEXT
TINYTEXT
, ТЕКСТ
, СРЕДНЕТЕКСТ
и ДЛИННЫЙ ТЕКСТ
.
Они соответствуют четырем типам BLOB
и
имеют одинаковую максимальную длину и требования к хранению. Значения BLOB
обрабатываются как двоичные строки
(байтовые строки). У них бинарник
набор символов и сопоставление, а также сравнение и сортировка
на основе числовых значений байтов в значениях столбца. Значения TEXT
обрабатываются как недвоичные строки
(символьные строки). У них есть набор символов, отличный от двоичный код
, значения сортируются и сравниваются
на основе сопоставления набора символов.
Если строгий режим SQL не включен и вы присваиваете значение BLOB
или
столбец, который
превышает максимальную длину столбца, значение усекается до
подходят, и выдается предупреждение. Для усечения не пробела
символов, вы можете вызвать ошибку (а не
предупреждение) и подавить вставку значения с помощью строгого SQL
режим. См. раздел 5.1.11, «Режимы SQL сервера».
Усечение лишних пробелов в конце вставляемых значений
в TEXT
столбцов всегда
генерирует предупреждение, независимо от режима SQL.
Для столбцов
и BLOB
:
при вставке нет заполнения, и байты не удаляются
Выбрать.
Если столбец TEXT
индексируется, запись индекса
сравнения дополняются пробелами в конце. Это означает, что, если
индексу требуются уникальные значения, для
значения, отличающиеся только количеством пробелов в конце. За
например, если таблица содержит 'а'
, попытка
для хранения 'a'
приводит к дублированию ключа
ошибка. Это неверно для столбцов BLOB
.
В большинстве случаев вы можете считать BLOB
VARBINARY
, который
может быть сколь угодно большим. Точно так же вы можете рассматривать TEXT
столбец как Колонка VARCHAR
. BLOB
и TEXT
отличаются от VARBINARY
и VARCHAR
следующими способами:Для индексов на
BLOB
иTEXT
столбцов, необходимо указать индекс длина префикса. ДляCHAR
VARCHAR
, длина префикса по желанию. См. раздел 8.3.5, «Индексы столбцов».BLOB
иТЕКСТ
столбцов не может иметь значенийDEFAULT
.
Если вы используете атрибут BINARY
с Тип данных TEXT
, столбцу присваивается
двоичная ( _bin
) сортировка столбца
набор символов.
LONG
и LONG VARCHAR
MEDIUMTEXT
. Это
функция совместимости. MySQL Connector/ODBC определяет значения BLOB
как LONGVARBINARY
и ТЕКСТ
значения как LONGVARCHAR
.
Потому что BLOB
и ТЕКСТ
значения могут быть очень длинными, вы можете столкнуться с некоторыми
ограничения в их использовании:
Только первый
max_sort_length
байт столбец используется при сортировке. Значение по умолчаниюmax_sort_length
равно 1024. Вы можете сделать больше байтов значимыми при сортировке или группировке за счет увеличения стоимости
на сервере запуск или время выполнения. Любой клиент может изменить значение своего сеанс max_sort_lengthmax_sort_length
переменная:mysql> SET max_sort_length = 2000; mysql> SELECT id, комментарий FROM t -> ЗАКАЗАТЬ ПО комментарию;
Экземпляры
BLOB
илиTEXT
столбцов в результате запроса который обрабатывается с помощью временной таблицы, вызывает сервер использовать таблицу на диске, а не в памяти, потому что
механизм хранения не поддерживает эти типы данных (см. Раздел 8.4.4, «Использование внутренних временных таблиц в MySQL»). Использование диска влечет за собой снижение производительности, поэтому включитеBLOB
илиТЕКСТ
столбцов в результате запроса только в том случае, если они действительно необходимы. За например, избегайте использованияВЫБЕРИТЕ *
, который выбирает все столбцы.Максимальный размер
BLOB
илиТЕКСТ
объект определяется его типом, но самое большое значение, которое вы фактически можете передать между клиента и сервера определяется количеством доступных память и размер коммуникационных буферов. Вы можете изменить размер буфера сообщений, изменив значение параметрамакс_разрешенный_пакет
переменная, но вы должны сделать это как для сервера, так и для вашего клиентская программа. Например, оба mysql и mysqldump позволяют изменить сторона клиентазначение max_allowed_packet
. См. раздел 5.1.1, «Настройка сервера». Раздел 4.5.1, «mysql — клиент командной строки MySQL», и раздел 4.5.4, «mysqldump — программа резервного копирования базы данных». Вы также можете сравнить размеры пакетов и размер объектов данных, которые вы храните в хранилище см.