Материал: Graber_Martin_-_SQL_dlya_prostykh_smertnykh_-_2014

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

 

Эквивалент11ые типы да1111ых в других языках

 

 

FORTRAN

 

Тип в SQL

Эквивалент в FORTRAN

CHARACTER

CHARACTER

INTEGER

INTEGER

REAL

REAL

DOUBLE

DOUBLE

PRECISION

PRECISION

323

с

ШtELIJJrnuШLЫD

Некоторые общие

отклонения от

стандарта SQL

Приложение С. Некоторые общие отклоиения от стандарта SQL

Существует целый ряд характерных чертязыка SQL, которые не определены как

составная часть ни в стандарте ANSI, ни в стандарте ISO, но являются общими для множества реализаций SQL, в силу того, что в практике они были признаны полезны­ ми. В этом приложении рассматриваются подобные характеристики. Естественно, что они отличаются для различных программных продуктов. Здесь мы знакомим вас с введением в некоторые наиболее общие подходы.

Типы данных

Типы данных, поддерживаемые стандартом SQL, рассмотрены в приложении В. Они представлены типом CHARACTER и множеством числовых типов. Фактически, разрабатываемые приложения могут быть гораздо более сложными в плане реально используемых типов данных. Обсудим некоторые нестандартные типы данных.

ТИПЫ DATE (дата) и TIME (время)

Тип данных DATE широко используется несмотря на то, что он не является часгью

стандарта. Мы применяли этот тип в таблице Orders, предполагая формат: mm/dd/yyyy. Такой формат представления даты принят IBM в качестве стандартного

для США. Конечно, возможны и другие, и конкретные реализации часто поддержива­

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

Стандарт Формат Пример

Формат ISO (lntemational

yyyy-mm-dd

1990-10-31

Standards Organization)

 

 

Формат JIS (Japanese

yyyy-шm-dd

1990-10-31

Industrial Stadard)

 

 

Формат EUR (IВМ

dd.mm.yyyy

10.31.1990

European Stadard)

 

 

Благодаря наличию специального типа, определенного для дат, над ними можно выполнять арифметические операции. Например, можно прибавить к дате определен­ ное количество дней и в результате получить другую дату, причем, программа сама от­

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

также сравнивать, например, date А < date В означает, что дата А предшествует дате В

в хронологическом порядке.

326

Типы данных

Есть множество программ, в которых, помимо дат, принят специальный тип для времени (ПМЕ); для представления времени также определено множество форматов,

включая следующие:

Стандарт

Формат

Пример

Формат ISO (Intemational

hh-mm-ss

21.04.37

Standards Organization)

 

 

Формат JIS (Japanese

hh-mm-ss

21.04.37

lndustrial Standard)

 

 

Формат EUR (IВМ European

hh-mm-ss

21.04.37

Standard)

 

 

Формат USA (IВМ USA

hh.mm АМ/РМ

9.04 РМ

Standard)

 

 

Для данных, представленных в формате TIME, определены операции сложения и сравнения (как и для данных, представленных в формате DATE), причем количество се­

кунд в минуте и часов в сутках учитывается автоматически. Кроме того, определены

специальные встроенные константы, определяющие текущую дату и текущее время

(CURDATE и CURТIME соответственно). Эти константы сходны с константой USER в том смысле, что их значения постоянно обновляются.

Можно ли включить время и дату в одно поле? Некоторые реализации включают только тип DATE, предполагая, что этого вполне достаточно. Напротив, есть реализа­ ции, в которых определен тип ТIMESTAMP, который определяется как комбинация

двух типов - DATE и ПМЕ.

ТИПЫ ТЕХТSTRJNG (строка текста)

ANSI поддерживает один тип для представления текста. Это тип CHAR. Предпо­

.1агается, что любое поле этого типа имеет индивидуальную длину. Если строка, вставляемая в поле, имеет меньшую длину, то она дополняется пробелами; длина строки не может превосходить длины поля. Хотя, с точки зрения удобства разработ­

ки приложений, это определение накладывает ряд ограничений для пользователя.

Например, операция UNION применима только к символьным полям одинаковой

длины.

Многие разработки поддерживают строки переменной длины и для этого - типы данных VARCHAR и LONG VARCHAR (часто называемый просто LONG). Поле типа CHAR всегда занимает при размещении в основной памяти количество символов, оп­

ределяемое максимальным количеством символов, хранящихся в поле, а поле

VARCHAR занимает только участок памяти, необходимый для хранения реа.1ьного значения поля, хотя SQL должен будет выделить дополнительно смежный участок па­ мяти для хранения реальной длины поля. Поля типа VARCHAR могут иметь любую длину вплоть до определенного разработчиком максимума, который изменяется от 254 до 2048 символов для типа VARCHAR и вплоть до 16К символов для типа LONG. Тип LONG обычно используется для текстов более или менее одинаковой природы (например, для поясняющих текстов) или для данных, которые трудно сжать до про-

327

Приложение С. Некоторые общие отклонения от стандарта SQL

стого поля. Тип VARCHAR можно использовать для любых текстов, длина которых

изменяется в достаточно широких пределах.

Не рекомендуется использовать тип VARCHAR вместо CHAR. Реализация опера­ ций поиска и обновления для полей типа VARCHAR сложнее и, следовательно, мед­ леннее, чем для полей типа CHAR. Кроме того, тип VARCHAR использует определенный объем основной памяти для хранения длины строки. Следует оценить, какая часть множества значений поля будет отличаться по длине, а также будут ли зна­ чения поля объединяться с другими полями, прежде чем решить какому из типов от­ дать предпочтение: CHAR или VARCHAR. Часто тип LONG используют для хранения двоичных данных. Конечно, поля типа LONG имеют ограничения по длине, которые не всегда кажутся удачными, но тем не менее в SQL можно работать с данными такого

типа. Детали следует уточнять по соответствующим руководствам.

Команда FORМAT

Набор средств для обработки результата в стандартном SQL весьма ограничен. Хотя многие реализации включают SQL в пакеты программ, предоставляющие раз­ личные средства для выполнения этой функции, некоторые реализации используют команду, подобную команде FORМAT, в самом SQL для применения определенных структур при оформлении ответа на запрос. Среди возможных функций команды FORMAT следует отметить следующие:

•установка ширины столбцов (для печати);

•определение способа представления NULL-значений;

•назначение новых имен столбцов;

•определение элементов оформления начала и конца страницы;

•применение подходящих или изменение заданных форматов, содержащих дату,

время или денежную единицу;

• подведение итогов и подытогов без исключения полей, по которым оно произ­ водится, как и с помощью SUM. Один из возможных подходов к решению этой

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

COMPUTE.

Команду FORMAT можно включить непосредственно до или после запроса, для которого эта команда применяется, в зависимости от реализации. Обычно одна ко­ манда FORMAT применяется к одному запросу, хотя и ряд команд FORMAT может применяться к одному запросу. Приведем несколько типичных команд FORMAT:

FORMAT NULL ·- _ _ _ _

'·

FORMAT BTITLE 'Заказы, сгруппированные по продавцам';

FORMAT EXCLUDE (2, З);

328

Источник: https://studfile.net/preview/16418473/