С.Д. Кузнецов - Основы баз данных (1121716), страница 46
Текст из файла (страница 46)
В реализациях приближенным числовым типам ЯЯ(. обычно соответствуют типы с плавающей точкой. В КО(. поддерживаются три варианта приближенных числовых типов. ° Тип ккль. Значения типа соответствуют числам с плавающей точкой одинарной точности. Точность определяется в реализации, но обычно совпадает с точностью одинарной плавающей арифметики, поддерживаемой на аппаратной платформе, которая используется реализацией. При определении столбца указывается просто кклт.. 214 Лекция 11 Общее введение, типы данных и средства определения доменов ° Тип ОООВЬЕ РКЕС181ОН.
Точность значений этого типа определяется в реализации, но она должна быть больше точности типа кеАь. Обычно приближенным числам БОЕ с двойной точностью соответствуют поддерживаемые аппаратурой числа с плаваюшей точкой двойной точности. При определении столбца указывается просто ОООВЬЕ РКЕС181ОТЬ «Тип РЬОАт. Это параметризуемый тип, значение параметра р которого задает необходимую точность значений. Требуется, чтобы реально обеспечиваемая реализацией точность значений была не меньше р. Допустимый диапазон значений параметра р определяется в реализации. При определении столбца можно указать либо РьоАТ (р), либо просто РьОАт. В последнем случае подразумевается точность, определяемая реализацией по умолчанию.
° Литералы приближенных числовых типов представляются в виде литерала точного числового типа, за которым могут следовать символ «е» и литерал целого числового типа. Примеры литералов приближенных числовых типов: 123, 123. 12, 12 3Е12, 123 . 12Е12. Литеральное выражение хеу представляет значение х* (10') . Типы символьных строк В БО(. определены три параметризуемых типа символьных строк: СНАРАСТЕК (ИлИ СНАК), СНАКАСТЕК ЧАвт'1НО (ИлИ СНАК ЧАКУ1НО, ИлИ ЧАКСНАР) и СНАКАСТЕК ЬАКОЕ ОВОЕст (или СЬОВ). ° Тип снАРАстек. Значениями типа являются символьные строки. Конкретный набор допустимых символов определяется в реализации, но, как правило, включает набор символов АБС11. При определении столбца допускается использование спецификаций СНАРАСТЕК (х) и просто снАРАстек. Последний вариант эквивалентен заданию снАРАстек (1) .
После определения столбца типа СНАВАСтек (х) СУБД будет резервировать место для хранения х символов этого столбца во всех строках соответствуюшей таблицы. Если, например, определен столбец типа СНАКАСТЕК (8), и в некоторой строке таблицы в него заносится символьная строка длиной пять символов, то реально будут храниться восемь символов, последние три из которых будут пробелами'*. е ТИП СНАКАСтЕК ЧАКУТНО. Прн ОПрЕдЕЛЕНИИ СтОЛбца дОПуСКаЕтСя ИС- пользование спецификаций СНАКАСтек чАКУТНО (х) и просто СНАКАС- тек чАКУТНО.
Последний вариант эквивалентен заданию снАРАСтек ЧАКУТНО (1). Если в некоторой таблице определяется столбец типа снАРАстек чАкутно (х), то в каждой строке этой таблицы значения ' В контексте локализации Щ:ориентироизнной СУБД (средспи яокадизации входят в стандарт языка) можно опредеяить еще три типа символьных строк — нхттонаь снхяасткя, нхтт онхь снхкхсткв ухвутнс и ькттонаь снхкхстпк яяск овзкст. Аспекты интернационализации и локализации составляют отдельное измерение языка и не обсуждаются в данном курсе.
" Именно пробелами, а не «пустыми» символами! 215 Курс Основы баз данных данного столбца будут занимать ровно столько места, сколько требуется для сохранения соответствующей символьной строки (но ни одна такая строка не может состоять более чем из х символов).* ° Определен ряд операций, которые можно выполнять над символьными строками. Перечислим некоторые из них. ° Операция конкатенации (обозначается в виде «) )») возвращает символьную строку, произведенную путем соединения строк- операндов в том порядке, в каком они заданы. ° Функция выделения подстроки (виввтнтнО) принимает три аргумента — строку, номер начальной позиции и длину — и возвращает строку, выделенную из строки-аргумента в соответствии со значениями двух последних параметров. ° Функция Оррен возвращает строку в которой все строчные буквы строки-аргумента заменяются прописными.
Функция ЬОНЕН, наоборот, заменяет н заданной строке все прописные буквы строчными. ° Функция определения длины (снАВАстен ьенстн, Остет ьенстн, втт ьенстн) возвращает длину заданной символьной строки в символах, октетах или битах (в зависимости от вида вычисляющей функции) в виде целого числа. ° Функция определения позиции (РОЯ1т1Ои) определяет первую позицию в строке Я, с которой в нее входит заданная строка В1 (если не входит, то возвращается значение нуль). ° Тип снАВАстен ьлнсе Овдест.
Этот тип данных предназначен для определения столбцов, хранюцих большие и разные по размеру группы символов. ПрИ ОПрЕдЕЛЕНИИ СтОЛбца ЗадаЕтСя СПЕцИфИКацИя СЬОВ (х), ГдЕ х Задаст максимальный размер соответствующей группы символов. Максимально возможное значение параметра х определяется в реализации, но, очевидно, что оно должно быть существенно больше максимально возможного значения параметра х, присутствующего в типах СВАН и СНАВ ))АВТТНО." ° Литералы типов символьных строк представляются в виде последовательностей символов, заключенных в одинарные или двойные кавьрпси. В первом случае среди набора символов литерала допускается наличие символов двойной кавычки, а во втором — символов одинарной кавычки.
Примеры литералов символьных строк: 'Авсвее ', 'АЬ" ссс) ', "ВЬсс)е1", "аЬ' сс)тес Типы битовых строк В ВОЬ определены три параметризуемых типа битовых строк: втт, В1Т ЧАНУ1ИО И В|НАВУ ЬАВОЕ ОВОЕСТ (ИЛИ ВЬОВ). " Максимально допустимая длина строк постоянного и переменного размера (значение параметра х) определяется в реализации. " Поскольку значения г могут быть очень большими, допускается сокращенная форма их задания в виде лк, пи и со, где о — положительное целое число, а к, н и С означают кила, мега и гига соответственно. 216 Общее введение, типы данных и средства определения доменов Лекция 11 ° Тип вгт. Значениями типа являются битовые строки. При определении столбца допускается использование спецификаций Вгт )х) и просто В17.
Последний вариант эквивалентен заданию В1т (1) . После определения столбца типа В1т ) х) СУБД будет резервировать место для хранения х бит этого столбца во всех строках соответствующей таблицы. ° Тип в1т ))ЛВ71ня. При определении столбца допускается использование только спецификации без умолчания вида втт ьглпу1на )х), где значение х определяет максимальную длину битовой строки, которую можно хранить в данном столбце. ° Над битовыми строками определен ряд операций. Некоторые из них мы рассмотрим, ° Битовая конкатенация (обозначается в виде ) ) ), которая возвращает результирующую битовую строку, полученную путем конкатенации строк-аргументов в том порядке, в котором они заданы. ° Функция извлечения подстроки из битовой строки. Синтаксис и семантика этой функции идентичны синтаксису и семантике функции яцвятк1ня для символьных строк, за исключением того, что первый аргумент и возвращаемое значение являются битовыми строками.
° Функция определения длины (Осткт ькнцгн, втт ькнцтн) возвращает длину заданной битовой строки в октетах или битах в зависимости от выбранной функции. ° Функция определения позиции (роЯ1т1он) определяет первую позицию в битовой строке Я, с которой в нее входит строка я1. Если строка Я1 не входит в строку Я, возвращается значение нуль. ° Тип втилру ь))ВЯВ ОВЯВСт. Зтоттипданных предназначендляопределения столбцов, храня)цих большие и разные по размеру группы байтов. При определении столбца задается спецификация вьоВ )х ), где х задает максимальный размер соответствующей группы байтов.
С технической точки зрения типы ОЬОВ и ВЬОВ очень похожи. Их разделение требуется для того, чтобы подчеркнуть, что значения типа ОЬОВ состоят из символов (в частности, в них может осмысленно производиться текстовый поиск), а значения типа Вьов состоят из произвольных байтов, не обязательно кодирующих символы. ° Литералы типов битовых строк представляются как заключенные в одинарные кавычки последовательности символов «О» и «1», предваряемые символом «в»; или предваряемые символом «х» последовательности символов, которые изображают шестнадцатеричные цифры (за цифрой «Я» следуют «Л», «В», «С», «Г)», «В» и «Р»), Примеры литералов типов битовых строк: В'0111001111000111111111', Х'7ВГВСВ0012РВРРА'.' " В литерале вьов всегда должно содержаться четное число шестнадцатиричных цифр.
217 Основы баз данных курс Типы даты и времени Возможность сохранения в базе данных информации о дате и времени очень важна с практической точки зрения. Достаточно вспомнить взбудоражившую весь мир «проблему 2000 года», одним из основных источников которой было некорректное хранение дат в базах данных. В стандарте ЗОЬ поддержке средств работы с датой и временем уделяется большое внимание. В частности, поддерживаются специальные «темпоральные» типы данных ЕАТЕ, ТТМЕ, 11МЕЕТАМР, ТТМЕ ИТТН Т1МЕ ЕОМЕ и Т1МЕБТАМР ИТТН Т1МЕ ЕОие. Коротко обсудим эти типы.
Тип даты ° Тип ОАте. Значения этого типа состоят из компонентов-значений года, месяца и дня некоторой даты. Значение года состоит из четырех десятичных цифр и соответствует летоисчислению от Рождества Христова до 9999 г. Значение месяца состоит из двух десятичных цифр н варьируется от 01 до 12. Значение номера дня месяца состоит из двух десятичных цифр и варьируется от 01 до 31, хотя значение месяца даты может накладывать ограничения на возможность использования значений дня месяца 29, 30 и 31. В стандарте БО не накладываются какие-либо ограничения на внутренний способ представления дат, используемый в реализации.
При определении столбца типа ВАТЕ указывается просто РАТЕ. ° Литералы типа РАТЕ представляются в виде строки «уууу-лхх-сЫ' „где символы у, и и й должны изображать десятичные числа. Например, литерал ОАТЕ '1949-04-08' представляетдату 8 апреля!949 г. Типы времени ° Тип т1ме. Значения этого параметризованного типа состоят из компонентов-значений часа, минуты и секунды некоторого времени суток. Значение часа состоит ровно из двух десятичных цифр и варьируется от 00 до 23.
Значение минуты состоит из двух десятичных цифр и варьируется от 00 до 59. Основное значение секунды также состоит из двух цифр, но может включать дополнительные цифры, представляющие доли секунды. Так что в целом значение секунды варьируется от 00 до 61.999... В значении времени присутствуют две лишние секунды, поскольку Всемирная служба времени иногда добавляет две секунды к последней минуте года для синхронизации мирового времени с реальным. Решение о поддержке этих «високосных» секунд принимается на уровне реализации. Число цифр в доле секунды также определяется в реализации.
В стандарте требуется только то, чтобы это число было не меньше шести. При определении столбца типа ТТМЕ может указываться 11ме (р) (значение р задает точность долей секунды) или просто т1ме (в этом случае доли секунды не учитываются). ° Литералы типа т1ме представляются в вице строки т1ме 'пп:лхпэз:1...1', где символы А,в, э и!должны изображатьдесятичныечис- г!в Общее аввдвнив, типы данных и средства определения доменов Пвкциа 11 ла. Например, литерал Т1мв ' 16: 33 — 20: 333 ' преяставляет время суток 16 часов 33 минуты 20 и 333 тысячных секунлы. Тйны временной метки ° Тип ттмвзтлмр. Значения этого параметризованного типа состоят из компонентов — значений года, месяца и лня некоторой даты, а также компонентов — значений часа, минуты и секунды некоторого времени суток (т.