Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД / БД / Базы данных Учебник Окончательный вариант!!!.doc
Скачиваний:
209
Добавлен:
22.05.2015
Размер:
1.77 Mб
Скачать

4.2.1.6.Interval (интервальный)

Стандарт ISO SQL: 2003 определяет следующие два интервальных типа:

год-месяц 4-значный год и 2-значное значение месяца (YYYY-MM)

день-время —2-значное значения дня, часа, минуты и секунды (DD HH: II: SS)

Интервальные типы

Наименование

Стандартный тип

Формат

Интервал выборки выражения

MICROSECOND

n

INTERVAL 5 MICROSECOND

SECOND

n

INTERVAL 5 SECOND

MINUTE

n

INTERVAL 5 MINUTE

HOUR

n

INTERVAL 5 HOUR

DAY

n

INTERVAL 5 DAY

WEEK

n

INTERVAL 5 WEEK

MONTH

n

INTERVAL 5 MONTH

QUARTER

n

INTERVAL 5 QUARTER

YEAR

n

INTERVAL 5 YEAR

SECOND_MICROSECOND

’n.n’

INTERVAL `5.4 SEC-

OND_MICROSECOND

MINUTE_MICROSECOND

’n.n’

INTERVAL `5.4

MINUTE_MICROSECOND

MINUTE_SECOND

’n.n’

INTERVAL `5:4

MINUTE_SECOND

HOUR_MICROSECOND

’n.n’

INTERVAL `5.4

HOUR_MICROSECOND

HOUR_SECOND

’n:n:n’

(часы:минуты:секунды)

INTERVAL `5:4:3

HOUR_SECOND

HOUR_MINUTE

’n.n’

INTERVAL `5:4

HOUR_MINUTE

DAY_MICROSECOND

’n.n’

INTERVAL `5.4

DAY_MICROSECOND

DAY_SECOND

день-время

’n n:n:n’ (день

часы:минуты:секунды)

INTERVAL `5 4:3:2`

DAY_SECOND

DAY_MINUTE

’nn:n’ (день

часы:минуты)

INTERVAL `5 4:3`

DAY_MINUTE

DAY_HOUR

’n.n’

INTERVAL `5 4` DAY_HOUR

YEAR_MONTH

год-месяц

’n.n’

INTERVAL `5-4`

YEAR_MONTH

4.2.1.7.Типы enum и set

ENUM(перечисление)- это строковый объект, имеющий значение, выбранное из списка допустимых, которые явно перечислены в спецификации столбца во время создания таблицы.

При некоторых условиях значение может быть также пустой строкой (" ) или NULL :

Если вы вставляете недопустимое значение в столбец типа ENU M (то есть, строку, которой нет в списке допустимых значений), то вставляется пустая строка в качестве специального ошибочного значения. Эту строку можно отличить от нормальной пустой строки по тому признаку, что она имеет числовое значение 0.

Если столбец типа ENU M объявлен как допускающий значение NULL , то NUL L – это корректное значение для него, и это значение по умолчанию. Если же столбец объявлен как NOT NULL , то значением по умолчанию будет первое из ее списка допустимых значений.

Каждое перечислимое значение имеет индекс :

Значения из списка допустимых , указанных в спецификации столбца, пронумерованы, начиная с 1.

Индексное значение пустой строки равно 0. Это означает, что вы может е использовать следующий оператор SELECT, чтобы найти строки, в которые вставлялось неверное значение ENUM:

mysql> SELECT * FROM имя_таблицы WHERE столбец_enum = 0;

Индекс значения NULL равен NULL.

Если вы извлекаете значение ENUMв числовом контексте, возвращается индекс значения столбца. Например, вы можете извлечь числовые значения столбцаENUMследующим образом:

mysql> SELECT столбец_enum + О FROM имя_таблицы;

Если вы хотите просмотреть все возможные значения столбца ENUM, воспользуйтесь

SHOWCOLUMNSFROMимя_таблицыLIKEстолбец_enumи проанализируйте определениеENUMво втором столбце вывода.

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

Например, столбец, объявленный как SET('one’, 'two')NOTNULL, может содержать только такие значения:

‘’

'one'

'two'

'one,two'

SETможет иметь максимум 64 различных члена.

MySQLхранит значенияSETв числовом виде, при этом первый справа бит соответствует первому члену набора. Если вы извлекаете значениеSETв числовом контексте, то оно будет содержать набор битов, соответствующий членам, которые образуют значение столбца. Например, вы можете извлечь числовое значение столбцаSETследующим образом:

mysql> SELECT столбец_set + О FROM имя_таблицы;

Значения SETсортируются в соответствии с числовыми представлениями. ЗначенияNULLпредшествуют всем значениям, отличным отNULL. Обычно поиск значения в наборе

осуществляется с помощью функции FIND_IN_SET() или операцииLIKE:

mysql> SELECT * FROM имя_таблицы

WHERE FIND_IN_SET('значение', столбец_set)>0;

mysql> SELECT * FROM имя__ таблицы WHERE столбец_set LIKE '%значение%';

Первый оператор найдет строки, в которых столбец_setсодержит член набора значение. Второй оператор похож, однако означает не то же самое. Он выбирает строки, в которых столбец_setсодержит значение даже в виде подстроки в другом члене набора.

Следующие операторы также допустимы:

mysql> SELECT * FROM имя_таблицы WHER E столбец_set & 1;

mysql> SELECT * FROM имя_таблицы WHER E столбец_set = 'значение1, значение2';

Первый из этих операторов ищет значения, содержащие первый член набора. Второй - ищет полное совпадение. Будьте осторожны со сравнениями второго типа. Сравнение значений набора с ' значение 1, значение2' вернет другой результат, чем сравнение с ' значение2, значение1\ Вы должны указывать элементы в том же порядке, в котором они перечислены в определении столбца.

Если вы хотите просмотреть все возможные значения столбца SET, воспользуйтесь

SHOWCOLUMNSFROMимя__таблицыLIKEстолбец_setи проанализируйте определениеSETво втором столбце вывода.

Типы Enum и Set

Наименование типа

Фиксированная/переменная длина

Размер

Атрибуты

ENUM

фиксированная

1–255 перечисленных строк, 1 байт

256–65,535 перечисленных строк, 2

байта

DEFAULT

NOT NULL

NULL

SET

фиксированная

1 перечисленных строк, 1 байт

2–9 перечисленных строк, 2 байта

10–17 перечисленных строк, 3 байта

18–25 перечисленных строк, 4 байта

26–64 перечисленных строк, 8 байт

DEFAULT

NOT NULL

NULL


Соседние файлы в папке БД