Типи даних BLOB та TEXT - документація Mysql 4, 5 українською мовою
Тип даних BLOB є двійковий об'єкт великого розміру, який може містити змінну кількість даних. Існують 4 модифікації цього типу - TINYBLOB, BLOB, MEDIUMBLOB і LONGBLOB, що відрізняються тільки максимальною довжиною збережених величин. Вимоги до пам'яті різних типів стовпців.
Тип даних TEXT також має 4 модифікації - TINYTEXT, TEXT, MEDIUMTEXT і LONGTEXT, що відповідають згаданим чотирма типами BLOB і мають ті ж максимальну довжину та вимоги до об'єму пам'яті. Єдина відмінність між типами BLOB і TEXT полягає в тому, що сортування та порівняння даних виконуються з урахуванням регістру для величин BLOB і без урахування регістру для величин TEXT. Іншими словами, TEXT - це незалежний від регістру BLOB.
Якщо розмір значення, що задається в стовпці BLOB або TEXT, перевищує максимально допустиму довжину стовпця, то це значення відповідним чином усікається.
Найчастіше стовпець TEXT може розглядатися як стовпець VARCHAR необмеженого розміру. І, аналогічно, BLOB - як стовпець типу VARCHAR BINARY. Відмінності у своїй такі:
Стовпці типів BLOB і TEXT можуть індексуватися у версії MySQL 3.23.2 та новіших. Старші версії MySQL не підтримують індексацію цих стовпців.
У стовпцях типів BLOB і TEXT не видаляється кінцевих символів, як це робиться для стовпців типу VARCHAR .
Для стовпців BLOB і TEXT може бути заданий атрибут DEFAULT - значення величин за промовчанням.
У MyODBC величини типу BLOB визначаються як LONGVARBINARY і величини типу TEXT - як LONGVARCHAR.
Так як величини типів BLOB і TEXT можуть бути надмірно більшими, при їх використанні доцільно передбачити деякі обмеження:
Щоб забезпечити можливість використання команд GROUP BY або ORDER BY у стовпці типу BLOB або TEXT , необхідно перетворити значення стовпця на об'єкт із фіксованою довжиною. Зазвичай це робиться за допомогою функції SUBSTRING. Наприклад:
Якщо цього не зробити, то операція сортування в стовпці буде виконана тільки для перших байтів, кількість яких визначається параметром max_sort_length . Значення за умовчанням величини max_sort_length дорівнює 1024; це значення можна змінити, використовуючи параметр -O сервера mysqld під час його запуску. Угруповання виразу, що включає величини BLOB або TEXT , можливе при вказівці позиції стовпця або використанні псевдоніму:
Максимальний розмір об'єкта типу BLOB або TEXT визначається його типом, але найбільше значення, фактично може бути передано між клієнтом і сервером, обмежено величиною доступної пам'яті і розміром буферів зв'язку. Можна змінити розмір буфера блоку передачі, але це необхідно як за сервера, і за клієнта. Налаштування параметрів сервера.
Слід враховувати, що внутрішнім уявленням будь-якої величини типу BLOB або TEXT є окремо розміщений об'єкт - на противагу всім іншим типам стовпців, для яких пам'ять виділяється одночасно для стовпця при відкритті таблиці.