Warning: include() [function.include]: Failed opening '/var/www/phps/data/www/php-s.ru/inc/meta.inc' for inclusion (include_path='.:/usr/local/zend-5.3/share/pear') in /home/users/n/niyazov/domains/php-s.ru/MySQL/5_9/index.php on line 15

Warning: include() [function.include]: Failed opening '/var/www/phps/data/www/php-s.ru/inc/header.inc' for inclusion (include_path='.:/usr/local/zend-5.3/share/pear') in /home/users/n/niyazov/domains/php-s.ru/MySQL/5_9/index.php on line 32

Warning: include() [function.include]: Failed opening '/var/www/phps/data/www/php-s.ru/inc/left-bar.inc' for inclusion (include_path='.:/usr/local/zend-5.3/share/pear') in /home/users/n/niyazov/domains/php-s.ru/MySQL/5_9/index.php on line 38

Warning: include() [function.include]: Failed opening '/var/www/phps/data/www/php-s.ru/inc/right-bar.inc' for inclusion (include_path='.:/usr/local/zend-5.3/share/pear') in /home/users/n/niyazov/domains/php-s.ru/MySQL/5_9/index.php on line 41

Warning: include() [function.include]: Failed opening '/var/www/phps/data/www/php-s.ru/inc/banner728-90.inc' for inclusion (include_path='.:/usr/local/zend-5.3/share/pear') in /home/users/n/niyazov/domains/php-s.ru/MySQL/5_9/index.php on line 47

Строковые типы BLOB и TEXT в MySQL.

Главная Страница » Книги по PHP » MySQL уроки для начинающих с нуля » Строковые типы BLOB и TEXT


Warning: include() [function.include]: Failed opening '/var/www/phps/data/www/php-s.ru/MySQL/menu-t.inc' for inclusion (include_path='.:/usr/local/zend-5.3/share/pear') in /home/users/n/niyazov/domains/php-s.ru/MySQL/5_9/index.php on line 53

Тип BLOB представляет собой двоичный большой объект, который может хранить переменное количество данных. Это универсальный тип данных, который предназначен для хранения любой информации. Если другие типы созданы и оптимизированы под конкретные типы данных, то этот может одинаково хорошо хранить что угодно.

Есть четыре типа BLOB'ов: TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB, отличающиеся только по максимальной длине значений, которые они могут хранить.

Четыре типа TEXT: TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT соответствуют четырем типам BLOB и имеют те же самые максимальные длины и требования к памяти (именно поэтому они и рассматриваются в одном подразделе). Единственное различие между типами BLOB и TEXT в том, что сортировка выполняется с учетом регистра для значений типа BLOB и без учета регистра для TEXT.

Если вы присваиваете столбцу BLOB или TEXT значение, которое превышает максимальную длину для типа столбца, значение будет усечено, чтобы поместиться в столбец.

В большинстве случаев вы можете расценивать столбец TEXT как VARCHAR, который может быть настолько велик, насколько хотите. Точно так же вы можете расценивать столбец BLOB как VARCHAR BINARY. Различия в том, что:

  • пробелы для BLOB и TEXT не удаляются, когда значения сохранены, в противоположность VARCHAR;
  • столбцы типов BLOB и TEXT не могут иметь значений по умолчанию (параметр DEFAULT).

Поскольку значения BLOB и TEXT могут быть чрезвычайно длинными, вы можете столкнуться с ограничениями при их использовании:

  • если вы хотите использовать инструкцию GROUP BY или ORDER BY на столбце типа BLOB или TEXT, вы должны преобразовать значение столбца в объект фиксированной длины. Стандартный способ сделать это: функция SUBSTRING, например:
mysql> select comment from tbl_name, substring(comment, 20) as substr
       ORDER BY substr;

Если вы не сделаете этого, только первые max_sort_length байт столбца используются при сортировке. Значение по умолчанию для max_sort_length равно 1024, это значение может быть изменено с использованием опции -О при запуске сервера mysqld. Вы можете группировать данные на выражении, включающем значения BLOB или TEXT, определяя позицию столбца или используя псевдоним:

mysql> select id,substring(blob_col,1,100) from tbl_name GROUP BY 2;
mysql> select id,substring(blob_col,1,100) as b from tbl_name GROUP BY b;
  • максимальный размер объекта BLOB или TEXT определен типом, но самое большое значение, которое вы можете фактически передать между клиентом и сервером, зависит от количества доступной памяти и размера буферов связи. Вы можете изменять размер буфера сообщения, но должны сделать это на клиенте и на сервере одновременно.

Warning: include() [function.include]: Failed opening '/var/www/phps/data/www/php-s.ru/inc/share.inc' for inclusion (include_path='.:/usr/local/zend-5.3/share/pear') in /home/users/n/niyazov/domains/php-s.ru/MySQL/5_9/index.php on line 95

Warning: include() [function.include]: Failed opening '/var/www/phps/data/www/php-s.ru/inc/footer.inc' for inclusion (include_path='.:/usr/local/zend-5.3/share/pear') in /home/users/n/niyazov/domains/php-s.ru/MySQL/5_9/index.php on line 102