5.3. Типы данных

СУБД SYBASE SQL Anywhere поддерживает большой спектр данных. Их можно разделит на несколько категорий:

Рассмотрим каждую категорию типов в отдельности.

5.3.1. Символьные типы

Символьные типы используются для представления как строк символов, так и отдельных символов. Перечень символьных типов представлен в табл. 8.

Таблица 8. Перечень символьных типов

Тип данныхНазначениеРазмер
CHARСтроковый типдо 32767 байт. по умолчанию 1 байт
CHARACTERТоже, что и CHAR 
CHARACTER VARYINGТоже, что и CHAR 
VARCHARТоже, что и CHAR 
LONG VARCHARСимвольный тип произвольной длины. Аналог МЕМО-полям в dBase, FoxPro, AccessДлина произвольная. Ограничена максимальным размером файлов базы данных (2 гигобайта)
TEXTТоже, что и LONG VARCHAR 

Данные символьных типов представляются двоичными кодами. То, как они отображаются на экранах мониторов или распечатках принтера определяется так называемыми кодовыми таблицами. СУБД SYBASE SQL Anywhere поддерживает более 50 кодовых таблиц. Они позволяют отображать текстовую информацию символами различных алфавитов, начиная от английского, русского, греческого, испанского и кончая китайским и японским. Информация об имеющихся кодовых таблицах хранится в системной таблице SYS.SYSCOLLATION. Для извлечения из нее данных достаточно выполнить оператор

SELECT * FROM SYS.SYSCOLLATION

Для того, чтобы получить информацию о кодовой таблице используемой в базе данных необходимо воспользоваться утилитой DBINFO (см. табл. 5 - 6). Для этого в утилите ISQL следует запустить ее на выполнение следующим образом:

/*Получение информации 
о базе данных Dubl_Biblia*/
DBTOOL DBINFO DATABASE 
'c:\database\dubl.db' //полное имя базового файла
TO 'c:\database\dbinfo.txt' /*полное имя файла 
                              для записи результата */
USING 'UID=Stepanov; PWD=S' /*строка пара-
                              метров соединения */

При использовании символьных данных нужно проверить как отображается символьная информация, хранимая в базе данных на вашей ЭВМ. На разных ЭВМ, в разных операционных системах и даже в разных приложениях она может визуально представляться по - разному. Например, автор при создании базы данных Biblia столкнулись со следующим фактом. При использовании кодовой странице 866RUS текстовые данные, хранимые в этой базе данных, нормально отображались символами русского алфавита в утилите ISQL. При считывании этих же данных через интерфейс ODBC в системах Access и Borland Delphi на экране появлялась непонятная абракадабра. Только после настройки параметров источника данных (было заполнено поле Translator Name - см. рис.16) проблема была решена.

5.3.2. Числовые типы

Числовые типы предназначены для обозначения целых, вещественных и денежных типов. Представители числовых типов приведены в табл. 9.

Таблица 9. Перечень числовых типов

Тип данныхДиапазон значенийТочность - число знаков после запятойРазмер
INTEGERот -2 147 483 648 до +2 147 483 64704 байта
INTТоже, что и INTEGER  
SMALLINTот -32 768 до +32 76702 байта
REALот -3.4 e-38 до 3.4 e+38до 64 байта
FLOATТоже, что и REAL  
DOUBLEот -1.797 e-308 до +1.797 e+308до 158 байт
TINYINTот 1 до 25501 байт
DECIMALчисла состоящие из N цифр c M цифрами в дробной части. По умолчанию N=30, M=6Mсколько требуется
NUMERICТоже, что и DECIMAL  
MONEYДля хранения денежных величин. Допустимо значение NULL. Числа из 20 цифр, с 4 цифрами после запятой4 
SMALLMONEYДля хранения денежных величин. Допустимо значение NULL.. Числа из 10 цифр, с 4 цифрами после запятой4 

5.3.3. Типы дата/время

Типы дата/время предназначены для хранения времени, дат и дат совместно с временем. Такие типы, поддерживаемые СУБД SQL Anywhere, перечислены в табл. 10.

Таблица 10. Перечень типов дата/время

Тип данныхНазначениеРазмер
DATE Тип для представления даты в виде совокупности года, месяца и числа. Значение года может изменяться в диапазоне от 0001 до 9999 года 4 байта
TIME Тип для представления времени в виде совокупности часа, минут, секунд и долей секунд. Доли секунд хранятся с точностью до 6 знаков. 8 байт
TIMESTAMPТип для представления момента времени конкретной даты. Данные хранятся в виде совокупности года, месяца, числа, часа, минут, секунд и долей секунд. Доли секунд хранятся с точностью до 6 знаков. 8 байт
DATETIMEТоже, что и TIMESTAMP 
SMALLDATETIMEТоже, что и TIMESTAMP 

Обмен данными типа дата/время с базами данных производится:

В первых двух случаях все компоненты данных типа дата/время записываются в свои поля. В результате этого достигается однозначное представление информации. При использовании строки формат данных типа дата/время определяется такими параметрами баз данных как DATA_FORMAT, DATA_ORDER, TIME_FORMAT и TIMESTAMP_FORMAT. Различные сочетания этих параметров порождают большое число вариантов форматов. Однако это не должно вызывать особого беспокойства. Параметры базы данных устанавливаются для всей базы данных и действуют на все приложения и всех пользователей. Форматы данных типа дата/время, определяемые вышеуказанными параметрами баз данных по умолчанию, представлены в табл. 11.

Таблица 11. Форматы представления данных типа дата/время, определяемые по умолчанию

Тип данныхФормат, используемый по умолчанию
DATE'YYYY-MM-DD'
TIME'HH:NN:ss.SSS'
TIMESTAMP'YYYY-MM-DD HH:NN:ss.SSS'
DATETIME'YYYY-MM-DD HH:NN:ss.SSS'
SMALLDATETIME'YYYY-MM-DD HH:NN:ss.SSS'

В табл. 11 используются следующие сокращения:

По умолчанию составляющие времени HH, NN, ss, SSS принимаются равными нулю, а DD - единице. Содержимое строк, представляющие данные типа дата/время , конвертируются автоматически. Некоторые примеры такого преобразования приведены в табл. 12.

Таблица 12. Примеры преобразования типов дата/время

Тип данныхСодержимое строкиРезультат преобразования
DATE'1994-06-08'
'1994-06'
'1994-'
'1994'
'1994-06-08'
'1994-06-01'
Ошибка преобразования
Ошибка преобразования
TIME'19:50:25.136777'
'19:50:25'
'19:50'
'19:'
'19'
'19:50:25.136'
'19:50:25.000'
'19:50:00.000'
'19:50:00.000'
Ошибка преобразования
TIMESTAMP'1994-06-08 19:50:25.136777'
'1994-06 19:50'
'1994-06'
'1994-06-08 19:50:25.000'
'1994-06-01 19:50:00.000'
'1994-06-01 00:00:00.000'

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

Таблица 13. Арифметические операции, применимые к данным типов дата/время

Тип первого операндаОперацияТип второго операндаТип результатаПримечание
DATE+ (-)INTEGERDATEУвеличивает (Уменьшает) значение даты на целое количество дней
TIMESTAMP+ (-)INTEGERTIMESTAMPУвеличивает (Уменьшает) значение даты на целое количество дней
DATE+TIMETIMESTAMPФормирует из исходных операндов значение типа TIMESTAMP
DATE-DATEINTEGERОпределяет разницу в днях между значения дат исходных операндов
DATE-TIMESTAMPINTEGERОпределяет разницу в днях между значения дат исходных операндов
TIMESTAMP-DATEINTEGERОпределяет разницу в днях между значения дат исходных операндов
TIMESTAMP-TIMESTAMPINTEGERОпределяет разницу в днях между значения дат исходных операндов

5.3.4. Двоичные типы

Двоичные типы предназначены для представления двоичных данных, включая изображения и другую информацию, не обрабатываемую собственными средствами СУБД. Все двоичные типы приведены в табл. 14.

Таблица 14. Двоичные типы SQL Anywhere

Тип данныхНазначениеsРазмер
BITТип для представления значений 0 и 1. Аналог полей типа Logical в dBase, FoxPro1 байт
BINARYТоже, что и CHAR, за исключением операций сравнения. В отличии от CHAR, данные этогопо умолчанию 1 байт типа сравниваются на полное совпадение двоичных кодов байтовдо 32767 байт
LONG BINARYТип для представления двоичных данных произвольной длиныДлина произвольная. Ограничена максимальным размером файлов базы данных (2 гиго- байта)
IMAGEТоже, что и LONG BINARY 

5.3.5. Пользовательские типы данных

В СУБД SYBASE SQL Anywhere пользователям предоставлена возможность создавать свои типы данных. Они создаются на базе существующих типов

Пользовательские типы можно создать и в утилите ISQL, и утилите SQL Central. В среде ISQL для решения этой задачи необходимо выполнить SQL-оператор CREATE DATATYPE. В SQL Central расширить состав имеющихся типов данных можно при помощи мастера Add User-defined Data Type, являющегося элементом папки User-defined Data Types (см. рис. 40). Право создания пользовательских типов данных имеют только пользователи, имеющие право создавать объекты базы данных (класс полномочий Resource) или обладающие правами администратора (класс полномочий DBA). Пользователь, создавший новый тип данных, становится его владельцем. Сразу после появления этого типа данных доступ к нему получают все пользователи, зарегистрированные в базе данных.

Новый тип данных может применяться при определении типов полей и при описании переменных в хранимых процедурах и триггеров. Удалить новый тип может его владелец или пользователь с классом полномочий DBA. Удаление этого типа данных возможно только в том случае, если он нигде не используется.

В завершении анализа типов данных, поддерживаемых SQL Anywhere, необходимо сказать следующее. Большое количество "собственных" типов данных и возможность создания пользовательских типов данных должны удовлетворить запросы самого взыскательного пользователя.

Назад | Содержание | Вперед