ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

Все о MySQL. Сложные типы


28-12-2009

Кроме основных типов, которые обсуждались в предыдущих разделах, MySQL также расширяет свои спецификации на два сложных типа: ENUM и SET. Несмотря на то, что технически это строковые типы, они попадают в другую категорию, т.к. их значения выбираются из предварительно заданных строк. Тип ENUM (перечисление) разрешает выбор только одного значения из набора допустимых значений, тип SET допускает выборку любого произвольного количества значений из допустимого набора значений.
Тип ENUM
Этот тип данных обычно используется для задания взаимоисключающих значений, в которых допускается выбор только одного значения из набора. Самым характерным примером таких данных могут служить данные о поле человека, который может быть только мужским или только женским. Рассмотрим следующий пример. 
Сложные типы
Нетрудно заметить, что поля, объявленные с типом ENUM, могут содержать только те значения, которые были перечислены во множестве разрешенных значений или значений NULL, любая попытка использовать другие значения будет приводить к вставке MySQL пустой строки. При несовпадении регистра добавляемого значения, регистр вставленного значения будет автоматически изменен на регистр значения, с которым данное поле было объявлено. И это хорошо видно в последнем примере.
Интересно заметить, несмотря на то, что члены ENUM могут объявляться только как строки, внутренне они могут сохраняться как числа и индексироваться, начиная с 1. Тип ENUM может содержать максимум 65536 элементов при одном, резервируемом для хранения ошибок, этот элемент имеет индекс 0 (пустая строка).
Так как доступ к значениям типа ENUM может осуществляться по строке или по индексу, следующие два примера являются абсолютно идентичными.
Сложные типы
 MySQL рассматривает в качестве допустимых только те значения, которые присутствуют в объявлении типа ENUM; любая попытка вставить значения, отличные от этих, закончится неудачей и отображением значения ошибки. Это значит, что появляется возможность легко обнаружить различные ошибочные записи при поиске строк, содержащих пустую строку или соответствующее ей числовое значение 0. Это можно увидеть, немного изменив предыдущий пример, переделав его для подсчета количества строк с ошибочными значениями. Следующие два примера являются идентичными. 
Сложные типы
Тип SET
Подобным, хотя и не полностью аналогичным, является тип SET, позволяющий производить выборку любого количества значений из предопределенного набора строковых значений. В отличие от полей, объявленных с использованием типа ENUM, поля объявленные с типом SET, могут содержать ноль, один или более одного элементов допустимых значений. Это делает тип SET хорошим вариантом для выборки со многими возможными вариантами. Рассмотрим следующий пример.
Сложные типы
Как и в случае с типом ENUM, любая попытка использовать значение, которое не входит в предопределенный набор, завершится добавлением пустой строки.
Сложные типы
Тип SET допускает задание не более 64 элементов. Значения хранятся как последовательность битов, а бит, соответствующий выбранному элементу, будет иметь значение 1. Это битовое представление является простым и эффективным способом создания наборов элементов, он также позволяет избегать повторений, т.к. повторение одного и того же элемента в одном значении типа SET невозможно. Рассмотрим следующий пример.
Сложные типы
Этот тип данных также позволяет определять записи, имеющие ошибочные данные, - все, что нужно для этого, это подсчитать количество строк, которые имеют пустые строки или двоичное значение 0. Это хорошо видно из следующих двух примеров, которые являются идентичными.
Сложные типы

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Типы DATETIME и TIMESTAMP Все о MySQL. Выбор типа данных