4.2.1 Символьные строки
Символьная строка состоит из последовательности символов из определенного в реализации множества символов. Символьная строка обладает длиной, которая является положительным целым числом, определяющим число символов в последовательности.
Все символьные строки сравнимы. Символьная строка идентична другой символьной строке, если и только если она равна этой символьной строке в соответствии с правилами сравнения, определенными в 5.11, "<Предикат сравнения> (<comparison predicate>)".
4.2.2 Числа
Число - это либо точное численное значение, либо приблизительное численное значение. Все числа являются сравнимыми значениями.
Каждое точное численное значение обладает точностью и масштабом. Точность - это положительное целое число, которое определяет число значащих десятичных цифр. Масштаб - это неотрицательное целое число. Масштаб 0 означает, что число является целым. При масштабе N точное численное значение есть целое значение значащих цифр, умноженное на 10 в степени N.
Приблизительные численные значения состоят из мантиссы и порядка. Мантисса - это численное значение со знаком, порядок - это целое со знаком, определяющее значимость мантиссы. Приблизительное численное значение обладает точностью. Точность это положительное целое число, определяющее число значащих двоичных цифр в мантиссе.
При присвоении точного численного значения элементу данных или параметру, представляющему точное численное значение, сохраняющее лидирующие значащие цифры приближение этого значения представляется в целевом типе данных. Значение преобразуется таким образом, чтобы получить целевые точность и масштаб.
При присвоении точного или приблизительного численного значения элементу данных или параметру, представляющим приблизительное численное значение, сохраняющее лидирующие значащие цифры приближение этого значения представляется в целевом типе данных. Значение преобразуется таким образом, чтобы получить целевую точность.
4.3 Столбцы
Столбец есть мультимножество значений, которое может меняться во времени. Все значения одного столбца являются значениями одного типа и значениями в одной таблице. Значение столбца - минимальный элемент данных, которые могут быть выбраны из таблицы, и минимальный элемент данных, которые могут быть изменены.
Столбец имеет описание и порядковую позицию в таблице. Описание столбца включает его тип данных и указание о том, распространяется ли на столбец ограничение содержать только не неопределенные значения. Описание столбца символьных строк определяет его атрибут длины. Описание столбца приблизительных чисел определяет точность этих чисел. Описание столбца точных чисел определяет точность и масштаб этих чисел.
Именованный столбец есть столбец именованной таблицы или столбец, который наследует описание именованного столбца. Описание именованного столбца включает его имя.
4.4 Таблицы
Таблица есть мультимножество строк. Строка есть непустая последовательность значений. Все строки одной таблицы обладают одинаковой мощностью и содержат значения каждого столбца этой таблицы. I-ое значение каждой строки таблицы является значением i-ого столбца этой таблицы. Строка является минимальным элементом данных, которые можно занести в таблицу и удалить из таблицы.
Степень таблицы есть число столбцов этой таблицы. В любой момент времени степень таблицы та же, что и мощность каждой из ее строк, и мощность таблицы та же, что и мощность каждого из ее столбцов.
Таблица имеет описание. Это описание включает описание каждого из столбцов таблицы.
Базовая таблица есть именованная таблица, определенная через <определение таблицы> (<table definition>). Описание базовой таблицы включает ее имя.
Порожденная таблица - это таблица, порожденная прямо или косвенно из одной или нескольких других таблиц путем вычисления <спецификации запроса> (<query specification>). Значениями порожденной таблицы являются значения определяющих таблиц при ее порождении.
Представляемая таблица есть именованная таблица, определенная через <определение представления> (<view definition>). Описание представляемой таблицы включает ее имя.
Таблица является либо изменяемой (updatable), либо только читаемой. Операции занесения, модификации и удаления допускаются для изменяемых таблиц и не допускаются для только читаемых таблиц.
Сгруппированная таблица есть множество групп, порождаемых в ходе вычисления <раздела group by> (<group by clause>). Группа - это мульти-множество строк, в которых все значения столбца (столбцов) группирования равны. Сгруппированную таблицу можно рассматривать как набор таблиц. Множественные функции могут применяться к индивидуальным кортежам внутри сгруппированной таблицы.
Сгруппированное представление - это представляемая таблица, порожденная из сгруппированной таблицы.
4.5 Ограничения целостности
Ограничения целостности определяют допустимые значения базы данных путем ограничения значений в базовых таблицах.
Ограничения целостности фактически проверяются после выполнения каждого <оператора SQL> (<SQL statement>). Если базовая таблица, ассоциированная с ограничением целостности, не удовлетворяет этому ограничению целостности, то <оператор SQL> (<SQL statement>) не выполняется, и в параметр SQLCODE устанавливается определенное в реализации отрицательное число.
<Определение ограничения уникальности> (<unique constraint definition>) требует, чтобы никакие две строки в таблице не имели одинаковых значений в указанном столбце или столбцах.
Спецификация NOT NULL требует, чтобы никакие значения в столбце не были неопределенными значениями.
<Определение ограничения ссылок> (<referential constraint definition>) требует, чтобы для каждой строки одной указанной таблицы - "ссылающейся таблицы" - значения указанного столбца или столбцов либо включали как минимум одно неопределенное значение, либо были бы такими же, как значения указанного столбца или столбцов в некоторой строке другой указанной таблицы - "ссылаемой таблицы". Ссылающаяся таблица может быть той же самой таблицей, что и ссылаемая таблица.
<Определение проверочного ограничения> (<check constraint definition>) требует, чтобы указанное <условие поиска> (<search condition>) не было ложно ни для какой строки таблицы.
4.6 Схемы
<Схема> (<schema>) есть долговременно хранимый объект, определенный на языке определения схем. Он состоит из <раздела полномочий схемы> (<schema authorization clause>) и всех <определений таблицы> (<table definition>), <определений представления> (<view definition>) и <определений привилегий> (<privilege definition>), известных системе для указанного <идентификатора полномочий> (<authorization identifier>) в среде. Понятие среды определяется в реализации.
Таблицы, представления и привилегии, определенные через <схему> (<schema>), рассматриваются как "принадлежащие" или должные быть "созданными" <идентификатором полномочий> (<authorization identifier>), определенным для этой схемы.
Замечание: В реализации могут обеспечиваться средства (такие, как DROP TABLE, DROP VIEW, ALTER TABLE и REVOKE), которые позволяют создавать, уничтожать и модифицировать определения таблиц, представлений и привилегий для данного <идентификатора полномочий> (<authorization identifier>) в разные моменты времени. Однако в этом стандарте рассматриваются только <схемы> (<schema>), представляющие определения, которые известны системе в данный момент времени.
4.7 База данных
База данных есть набор всех данных, определенных <схемами> (<schema>) в среде. Понятие среды является определяемым реализацией.
4.8 Модули
<Модуль> (<module>) есть долговременно хранимый объект, определенный на языке модулей. <Модуль> (<module>) состоит из необязательного <имя модуля> (<module name>), <раздела языка> (<language clause>), <раздела полномочий модуля> (<module authorization clause>), ноля или более курсоров, определенных через <объявление курсора> (<declare cursor>) и одной или более <процедур> (<procedure>).
Прикладная программа есть сегмент выполняемого кода, содержащий, возможно, несколько подпрограмм. Единственный <модуль> (<module>) ассоциируется с прикладной программой в течение ее выполнения. Прикладная программа должна быть ассоциирована с самое большее одним <модулем> (<module>). Способ установления этой ассоциации, включающий возможное требование выполнения некоторого определенного в реализации оператора, определяется в реализации.
4.9 Процедуры
<Процедура> (<procedure>) состоит из <имени процедуры> (<procedure name>), последовательности <объявлений параметров> (<parameter declaration>) и одного <оператора SQL> (<SQL statement>).
Прикладная программа, ассоциированная с <модулем> (<module>), может обращаться к <процедурам> (<procedure>) этого <модуля> (<module>) через оператор "call", в котором определяется <имя процедуры> (<procedure name>) этой <процедуры> (<procedure>) и задается последовательность значений параметров, число и <тип данных> (<data type>) которых соответствует <объявлениям параметров> (<parameter declaration>) этой <процедуры> (<procedure>). Вызов <процедуры> (<procedure>) приводит к выполнению содержащегося в ней <предложения SQL> (<SQL statement>).
4.10 Параметры
Параметр объявляется в <процедуре> (<procedure>) через <объявление параметра> (<parameter declaration>). <Объявление параметра> (<parameter declaration>) определяет <тип данных> (<data type>) своего значения. Параметр либо принимает, либо поставляет значение соответствующего аргумента в вызове этой <процедуры> (<procedure>).
4.10.1 Параметр SQLCODE
Параметр SQLCODE - это специальный целый параметр. Его значение устанавливается равным коду состояния, который либо означает, что вызов <процедуры> (<procedure>) завершился успешно, либо, что в течение выполнения <процедуры> (<procedure>) возникла исключительная ситуация.
4.10.2 Параметр-индикатор
Параметр-индикатор - это целый параметр, который указывается после другого параметра. Его основное назначение - показывать, может ли значение другого параметра (принимаемого или поставляемого) быть неопределенным значением.