Программирование >>  Программный интерфейс приложений 

1 ... 38 39 40 [ 41 ] 42 43 44 ... 264


Обратите внимание на то, что наличие столбца типа varchar вынуждает СУБД MySQL преобразовать столбец с1 обратно в тип varchar. При попытке преобразовать тип столбца с1 в тип char с помощью команды alter table ничего не получится. Единственным выходом будет преобразование всех столбцов varchar в char одновременно.

ALTER TABLE my table MODIFY cl CHAR(IO), MODIFY c2 CHAR(IO)

Типы blob И text тоже являются типами переменной длины, но они не имеют аналогичного типа с фиксированной длиной. Таким образом, типы char, blob И text несовместимы и не могут присутствовать в одной таблице.

Исключением, при котором преобразования из типа char в тип varchar не будет, является случай, когда длина столбца char меньще 4 символов. Например, СУБД MySQL не будет преобразовывать тип столбца char в тип varchar в таблице:

CREATE TABLE my table (

cl CHAR(2) ,

c2 VARCHAR(10) )

Причина, no которой столбцы короче четырех символов не преобразуются в тип varchar, заключается в том, что в этом случае преобразование даст увеличение необходимой памяти за счет байт, необходимых для хранения длины. В действительности, когда все столбцы короткие, СУБД MySQL автоматически преобразует столбцы типа varchar в столбцы типа char, так как это не приводит к увеличению потребления памяти. Такое преобразование произойдет с таблицей, созданной следующим оператором create table:

CREATE TABLE my table (

cl VARCHAR(1) , c2 VARCHAR(2) , c3 VARCHARO) ,

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

describe my table.

I Fxeld I Type 1 Null Key Default Extra

I cl 1 char(l) I YES I NULL

I c2 I char(2) YES I NULL

I c3 I char(3) I YES I NULL



Типы столбцов BLOB и TEXT

Тип blob или двоичный большой объект - это накопитель, который может содержать все, что вы смогли туда положить. Его можно сделать настолько большим, насколько это возможно. В СУБД MySQL тип blob представляет собой семейство типов (tinyblob, blob, mediumblob, longblob), которые различаются только размером памяти, отводимой под них (см. табл. 2.8). Аналогично, тип text представляет собой семейство типов (tinytext, text, mediumtext, longtext). ТипЫ blob и

text во всем аналогичны между собой и отличаются только тем, что при выполнении операций сравнения и сортировки тип blob реагирует на регистр данных, а тип техт - нет. Столбцы такого типа полезны при хранении данных, которые будут расти в объеме или длина которых от строки к строке может сильно варьироваться. Таковыми могут быть файлы, созданные текстовыми редакторами, растровые и звуковые файлы, комбинированные данные и статьи новостей.

Начиная с версии 3.32.2, добавлена возможность индексирования по столбцам типа blob и text. Для этого сначала необходимо определить размер префикса, который будет использован для хранения индекса. Это позволит ограничить размер индекса и получить какой-то выигрыш от индексирования. Кроме того, с точки зрения здравого смысла, неразумно производить поиск, просматривая столбцы типа blob и text, так как столбцы этого типа часто содержат двоичные данные (изображения). Разумнее использовать другие столбцы таблицы для записи какой-то иден-тифицируюшей информации о данных, хранящихся в столбцах типа blob и text, а затем использовать ее в процессе поиска.

Столбцы типа blob и text требуют дополнительного обслуживания по следуюшим причинам.

Из-за большого разброса размеров столбцов типа blob и text, таблицы, которые их содержат, и подвергаются частым изменениям, обычно бывают сильно фрагментированы. Уменьшение этого эффекта и поддержание хороших показателей производительности может потребовать периодического запуска операции оптимизации с помошью оператора optimize table (подробнее об этом рассказано в главе 4, Оптимизация запросов ).

При наличии очень больших значений может потребоваться настройка значения max allowed packet для увеличения размера передаваемого пакета (подробнее об этом читайте в главе П, Общее администрирование MySQL ). Кроме того, может потребоваться увеличение размера пакета и на стороне клиента. (Приложение Д, Программы MySQL , описывает, как это можно осуществить с помошью утилит mysql и mysqldump.)



Типы ENUM и SET

Типы enum И set - ЭТО особые строковые типы, значения которых выбираются из фиксированного списка значений. Главная разница между ними заключается в том, что значение типа enum должно содержать точно одно значение из указанного множества, столбцы set могут содержать любой или все члены множества сразу. Другими словами, тип enum содержит взаимоисключающие значения, а тип set позволяет выбрать нескольких значений одновременно.

Тип enum используется для перечисления. Столбцу такого типа присваивается одно значение из указанного множества. Перечисление может содержать до 65536 членов (один из которых резервируется СУБД MySQL). Перечисления обычно используются для отображения значений, представляющих категории. Например, значения, хранящиеся в столбце, объявленном как enumcn , y ), могут принимать только значения n или y . Тип enum можно использовать также для хранения таких значений, как ответы на вопросы из анкеты, размер или цвет товара.

employees ENUMCless than 100 , 100-500 , 501-1500 ,

more than 1500 ) color ENUM( red , green , blue , black ) size ENUM( S , M , L , XL , XXL )

Этим типом можно воспользоваться при обработке выборок из Web-страниц, когда посетитель страницы делает выбор по радиокнопкам, расположенным на странице. Так, для выбора типа заказываемой пиццы тип enum МОЖНО заддть следующим образом:

crust ENUM( thin , regular , pan style )

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

wbc ENUM( 0 - 100 , 101 - 300 , > 300 )

Когда проверяемый результат попадает в один из перечисленных диапазонов, он запоминается как категория, в которую он попадает. С помощью типа enum очень трудно подобрать точное значение для целочисленного счетчика.

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

SET( luggage rack , cruise control , air conditioning , sun roof )



1 ... 38 39 40 [ 41 ] 42 43 44 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика