Доклад: Базы данных SQL
Представляемая таблица есть именованная таблица, определенная через <определение представления> (<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 Параметр-индикатор
Параметр-индикатор - это целый параметр, который указывается после другого параметра. Его основное назначение - показывать, может ли значение другого параметра (принимаемого или поставляемого) быть неопределенным значением.