Які відмінності між типами даних BLOB та TEXT у MySQL?


117

Що таке blobі що таке text? Які відмінності?

Коли мені потрібно використовувати blobі коли мені потрібен textяк тип даних?

Тому що для blobі text, є mediumblob== mediumtext, smallblob== small text. Вони навіть мають однакове значення?

І подивіться на це MEDIUMBLOB, MEDIUMTEXT L+ 3 байти, куди L < 224.

Що таке L?


Я думаю , що це повідомлення відповідає на ваше запитання stackoverflow.com/questions/7071662/mysql-text-vs-blob-vs-clob
earlonrails

Відповіді:


103

TEXT і CHAR перетворяться в / з набору символів, які вони пов'язані з часом. BLOB і BINARY просто зберігають байти.

BLOB використовується для зберігання двійкових даних, тоді як Text використовується для зберігання великих рядків.

Значення BLOB розглядаються як двійкові рядки (байтові рядки). Вони не мають набору символів, а сортування та порівняння ґрунтуються на числових значеннях байтів у значеннях стовпців.

Значення TEXT трактуються як небінарні рядки (символьні рядки). Вони мають набір символів, а значення сортують та порівнюють на основі зіставлення набору символів.

http://dev.mysql.com/doc/refman/5.0/en/blob.html


3
Отже, ми використовуємо текст для зберігання довгого тексту, наприклад "WordPress"? і ми використовуємо blob для зберігання дуже довгих URL-адрес? так чому б ми не використали varchar для зберігання дуже довгого тексту замість того, щоб використовувати крапку або текст? тому що в обчисленні пам'яті varchar дуже простий, наприклад створити веб-сайт таблиці (website_name varchar (30)), а потім заповнимо website_name "stackoverflow", тому потрібна пам'ять 13byte
nencor

5
TEXT буде замінено на Varchar (MAX), але поки в залежності від вашої версії mysql використовуйте TEXT для великих текстових публікацій, таких як повідомлення в блозі тощо. BLOB не слід використовувати для зберігання дуже довгих URL-адрес або великої кількості тексту . Зазвичай він використовується для зберігання зображень або інших бінарних об'єктів. Особисто я ніколи не використовую BLOB або TEXT і зберігаю велику кількість даних у файлах xml щодо папок на основі ідентифікатора користувача.
Дарсі

я не розумію об'єкт на основі двійкових даних. ви маєте на увазі, ми можемо зберігати фотографії в базі даних, використовуючи тип даних Blob ?? як папка? все, що я знаю про двійкове, - це лише 1 або 0.
nencor

1
@nencor Так, ви можете зберігати зображення в базах даних. Ви також можете зберігати архіви. Але ви не можете зберігати папку в базі даних, оскільки папки - це фактично функції файлової системи. (Зрештою, ви можете зберегти повну файлову систему, наприклад, як файл ізо-файлів до бази даних)
Martin Thoma,

@ martin-thoma У нас є програма, де на стороні сервера є база даних MongoDB. Мобільний компонент програми використовує SQLLite. Потрібно встановити спосіб перенесення даних між базою даних MongoDB та базою даних SQLLite. MongoDB використовує ObjectIds для унікальної ідентифікації даних. Оскільки SQLLite (RDBMS світ) не має жодного прямого способу представлення MongoDB ObjectIds, мені було цікаво, чи можу я зберігати ObjectIds як типи BLOB. Це звучить як розумне рішення? Це повільне виконання? Чи будуть якісь недоліки?
CS Lewis

10

TEXT і CHAR або nchar, які зазвичай будуть перетворені в звичайний текст, щоб ви могли зберігати текст лише у вигляді рядків.

BLOB і BINARY, що означає, що ви можете зберігати двійкові дані, такі як зображення, просто зберігайте байти.


що ви маєте на увазі під збереженням двійкових даних, таких як зображення? Ви мали на увазі URL-адресу зображення?
nencor

10

Blob datatypes зберігає бінарні об'єкти, як зображення, тоді як текстові типи даних зберігають текстові об'єкти, як статті веб-сторінок


7

BLOB - це двійковий рядок для зберігання змінної кількості даних. Здебільшого BLOB використовуються для зберігання фактичного бінарного зображення замість інформації про шлях та файл. Текст призначений для великої кількості символів рядків. Зазвичай блог чи новинна стаття становлять поле TEXT

L у цьому випадку використовується із зазначенням вимоги зберігання. (Довжина | Розмір + 3), поки вона становить менше 224.

Довідка: http://dev.mysql.com/doc/refman/5.0/en/blob.html


3

Відповідно до високоефективної книги Mysql:

Єдина відмінність між сімействами BLOB і TEXT полягає в тому, що типи BLOB зберігають бінарні дані без зіставлення чи набору символів, але типи TEXT мають набір символів та порівняння.


1

BLOB зберігає двійкові дані об'ємом більше 2 ГБ. Максимальний розмір для BLOB - 4 Гб. Бінарні дані означають неструктуровані дані, тобто зображення, аудіофайли, файли vedio, цифровий підпис

Текст використовується для зберігання великих рядків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.