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

1 ... 40 41 42 [ 43 ] 44 45 46 ... 264


При присвоении столбцу SET значения, содержащего подстроки, не перечисленные как элементы множества, эта строка будет опущена, а столбцу присвоено значение, состоящее из оставщихся подстрок. Порядок следования подстрок при присвоении значений типа SET не обязательно должен соответствовать порядку следования подстрок в объявлении столбца.

Однако потом при выборке значения элементы будут перечислены в том порядке, в котором они перечислены при объявлении. Предположим, что столбец SET предназначен для хранения наименований мебельных изделий.

SET( table , lamp , chair )

При этом при присвоении столбцу значения chair, couch, table произойдет следующее. Во-первых, значение couch будет опущено, так как оно не является членом множества. Во-вторых, при последующей выборке значений пользователь получит chair, table . Это происходит из-за того, что СУБД MySQL закрепляет за каждой подстрокой свой бит, а значение couch не имеет такого соответствия и поэтому будет проигнорировано.

При выборке СУБД MySQL, сканируя биты по порядку, конструирует строковое значение из цифрового значения и сортирует строку в том порядке, в котором она была объявлена. Это означает, что даже если элемент упоминается в строке несколько раз, при выборке он будет показан только раз. При выборке значения из столбца типа SET, которому были присвоены значения lamp, lamp, lamp , будет получено только lamp .

То, что СУБД MySQL пересортирует элементы в значениях SET, означает, что при выборке с помощью строк, элементы необходимо указывать в нужном порядке. Значение, добавленное как chair, table , не будет найдено по выборке table, chair . Его необходимо искать только как chair, table .

Сортировка и индексация столбцов типа set и типа enum производится в соответствии с внутренним (цифровым) значением столбца. Этот пример может показаться ошибочным из-за того, что он не отсортирован в алфавитно-цифровом порядке.

mysql> SELECT s FROM e table ORDER BY e;



Пустое значение null сортируется перед всеми значениями (или после, в случае сортировки по убыванию).

Для фиксированного набора значений и при необходимости сортировки в определенном порядке можно воспользоваться сортировочным порядком enum. При создании таблицы создайте столбец типа enum и перечислите значения в том порядке, в котором они должны быть отсортированы.

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

inysql> SELECT CONCAT (е) as e str FROM e table ORDER BX e str;

+--------+

I e str I

Атрибуты строковых столбцов

Атрибут binary используется только с типами char и varchar. Он

позволяет оперировать столбцом как двоичной строкой.

Столбец строкового типа может быть указан с общим атрибутом null или not null. Значение по умолчанию - null. Однако объявление столбца как not null ни в коем случае не может предотвратить ввода пустой строки. Здесь ни в коем случае нельзя путать отсутствующее значение с пустой строкой. Очевидно, что нельзя предотвратить ввод пустой строки, объявив ее с параметром not null. Предотвратить ввод пустых строк можно только на уровне приложения.

Для всех типов столбцов, кроме blob и text, можно указать параметр default. Таким образом объявляется значение по умолчанию. Если значение по умолчанию не определено, то столбцам присваиваются следующие значения:

пустое значение для столбцов, объявленных с атрибутом null;

пустая строка для столбцов, которые объявлены с атрибутом not null.

Исключение составляют столбцы, объявленные с типом enum, где в качестве значения по умолчанию назначается первый элемент перечисления. (Значением по умолчанию типа set, в случае когда столбец не может содержать пустые значения (null), будет пустое множество, что можно рассматривать как эквивалент пустой строки.)



Календарные типы столбцов

СУБД MySQL имеет несколько типов столбцов для хранения календарных данных: date, datetime, time, timestamp И year. Все ОНИ сведены в табл. 2.9. Тип year был введен в версии 3.22. Все другие были представлены во всех версиях СУБД MySQL. Требования к памяти представлены в табл. 2.10.

Таблица 2.9. Календарные типы столбцов Спецификация типа Диапазон

DATA ОТ 1000-01-01 до 9999-12-31

TIME от -838:59:59 до 838:59:59

DATATIME

от 1000-01-01 00:00:00 до 9999-12-31 00:00:00

TIMESTAMP [ (М) ]

от 19700101000000 до даты, находящейся где-то в 2037 году

YEAR[(М)]

от 1901 до 2155

Таблица 2.10. Объем памяти, требующийся для столбцов

календарного типа

Спецификация типа

Требования к объемам памяти

DATA

3 байта (4 байта для версий до 3.22)

TIME

3 байта

DATATIME

8 байт

TIMESTAMP

4 байта

YEAR

1 байт

Все типы имеют нулевое значение, которое записывается тогда, когда

вводится недопустимое значение. Нулевые значения календарных ти-

пов приведены в

табл. 2.11. Это значение также является значением по

умолчанию для столбцов, объявленных как not null.

Таблица 2.11. Нулевые значения

Спецификация типа

Нулевое значение

DATA

0000-00-00

TIME

00:00:00

DATATIME

0000-00-00 00:00:00

TIMESTAMP

00000000000000

YEAR

0000

Часть 1, Использование СУБД MySQL



1 ... 40 41 42 [ 43 ] 44 45 46 ... 264

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