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

4.3.1.9.Логический тип

PostgreSQL предоставляет стандартный SQL тип boolean. Значений типа boolean может быть два: "true"(истина) или "false"(ложь). Третье состояние "unknown"(неизвестно) представляется SQL значением NULL.

Допустимые литеральные значения для "true" это:

TRUE

't'; 'true'; 'y'; 'yes'; 'on'; '1';

Для "false" могут быть использованы такие значения как:

FALSE

'f'; 'false'; 'n'; 'no'; 'off'; '0';

Пробелы в начале и в конце игнорируются, а регистр букв значения не имеет. Предпочтительным (и соответствующим стандарту SQL) является использование ключевых слов TRUE и FALSE.

Значения boolean используют для хранения 1 байт.

4.3.1.10.Перечисления

Перечисления (enum) — это такие типы данных, которые состоят из статических, упорядоченных списков значений. Они эквивательны типам enum в некоторых языках программирования. В качестве примера типа enum можно привести дни недели или список состояний для каких-либо данных.

Объявление перечислений

Типы Enum создаются с помощью команды CREATE TYPE, например:

CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');

Порядок значений

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

Безопасность типа

Каждый тип перечисления является полностью отдельным типом данных и не может сравниваться с другим.

Подробности реализации

Тип enum занимает четыре байта на диске. Длина значения типа enum (текстовой метки) ограничена настройкой NAMEDATALEN, в компилированной в PostgreSQL; и при стандартной сборке, составляет по крайней мере 63 байта.

Значения перечислений зависят от регистра букв, так что 'happy' не тоже самое, что 'HAPPY'. Пробелы в значениях также учитываются.

Преобразования из внутренних значений перечисления в текстовые метки осуществляется в системном каталоге pg_enum. Может оказаться полезным опросить этот каталог напрямую.

5. Использованные в пример таблицы данных

Таблица detail (деталь) :

CREATE TABLE detail ( name CHAR(40) NOT NULL UNIQUE PRIMARY KEY, material CHAR(40), description CHAR(40),

price INTEGER, code DECIMAL );

Таблица supplier (поставщик) :

CREATE TABLE supplier ( name_supplier CHAR(40), trademark CHAR(40), postal_code INTEGER,

city CHAR(40),

street CHAR(40),

home INTEGER,

structure INTEGER,

office_number INTEGER,

phone INTEGER,

web_address CHAR(40),

e-mail CHAR(40), time TIME );

Таблица warehouse (склад) :

CREATE TABLE warehouse ( name_detail CHAR(40), invoice_number INTEGER,

date_of_receipt DATA,

price INTEGER,

amount INTEGER,

presence BOOLEAN,

supplier CHAR(40));

ПРИЛОЖЕНИЕ А

Рассмотрим итоговые таблицы соотношений типов данных в приведенных СУБД. Знаком «+» отмечены те типы, которые встречаются в данной СУБД, в свою очередь знаком «-» отмечены те типы, которые не встречаются в данной СУБД.

Символьные

Символьные типы данных

Oracle

MySql

PostgreSQL

CHAR

+

+

+

NCHAR

+

+

-

VARCHAR2

+

-

-

NVARCHAR2

+

-

-

VARCHAR

-

+

+

TINYTEXT

-

+

-

TEXT

-

+

+

MEDIUMTEXT

-

+

-

LONGTEXT

-

+

-

name

-

-

+

"char"

-

-

+

LONG

+

-

-

LOB

+

-

-

CLOB

+

-

-

NCLOB

+

+

-

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