Применимые привилегии для каждого <имени таблицы> (<table name>), содержащегося в <выражении, вырабатывающем таблицу> (<table expression>), должны включать SELECT.
Замечание:
"Применимые <привилегии> (<privileges>)" для <имени таблицы> (<table name>) определяются в 6.10 ,
"<определение привилегий> (<privileges definition>)".
a) Если <спецификация результата> (<result specification>) "*" указана в <подзапросе> (<subquery>) какого-либо <предиката> (<predicate>), отличного от <предиката exists> (<exists predicate>), то степень <выражения, вырабатываающего таблицу> (<table expression>) должна быть равна 1 и <спецификация результата> (<result specification>) эквивалентна <выражению, вырабатывающему значение> (<value expression>), состоящему из <спецификации столбца> (<column specification>), указывающей на единственный столбец <выражения, вырабатывающего таблицу> (<table expression>).
b) Если <спецификация результата> (<result specification>) "*" указана в <подзапросе> (<subquery>) <предиката exists> (<exists predicate>), то <спецификация результата> (<result specification>) эквивалентна произвольному <выражению, вырабатывающему значение> (<value expression>), не включающему <спецификацию функции над множеством> (<table expression>) и допустимому в <подзапросе> (<subquery>).
Тип данных значений <подзапроса> (<subquery>) есть тип данных явного или неявного <выражения, вырабатывающего значение> (<value expression>).
Пусть R обозначает результат <выражения, вырабатывающего таблицу> (<table expression>).
Каждая <спецификация столбца> (<column specification>) в <выражении, вырабатывающем значение> (<value expression>) должна недвусмысленно ссылаться на столбец R.
Если R - это сгруппированное представление, то <спецификация результата> (<result specification>) не должна содержать <спецификацию функции над множеством> (<set function specification>).
Если R - это сгруппированная таблица, то каждая <спецификация столбца> (<column specification>) в <выражении, вырабатывающем значение> (<value expression>) должна указывать на столбец группирования или быть специфицированной внутри <спецификации функции над множеством> (<set function specification>). Если R это не сгруппированная таблица и <выражение, вырабатывающее значение> (<value expression>) включает <спецификацию функции над множеством> (<set function specification>), то каждая <спецификация столбца> (<column specification>) в <выражении, вырабатывающем значение> (<value expression>) должна быть указана внутри <спецификации функции над множеством> (<set function specification>).
<Ключевое слово> (<key word>) DISTINCT не должно специфицироваться более одного раза в <подзапросе> (<subquery>), включая любой <подзапрос> (<subquery>), содержащийся в этом <подзапросе> (<subquery>).
Если <подзапрос> (<subquery>)
специфицируется в <предикате сравнения> (<comparison
predicate>), то <выражение, вырабатывающее таблицу> (<table
expression>) не должно содержать <раздел group by> (<group by
clause>) или <раздел having> (<having clause>) и не должно
идентифицировать сгруппированное представление.
Общие правила
Если R не является сгруппированной таблицей и <выражение, вырабатывающее значение> (<value expression>) включает <спецификацию функции над множеством> (<set function specification>), то R является аргументом или источником аргумента каждой <спецификации функции над множеством> (<set function specification>) в <выражении, вырабатывающем значение> (<value expression>) и результат <подзапроса> (<subquery>) есть значение, специфицированное <выражением, вырабатывающем значение> (<value expression>).
Если R не является сгруппированной таблицей и <выражение, вырабатывающее значение> (<value expression>) не включает <спецификацию функции над множеством> (<set function specification>), то <выражение, вырабатывающее значение> (<value expression>) применяется к каждой строке R, образуя мультимножество из n значений, где n - мощность R. Если не указано ключевое слово DISTINCT, то это мультимножество является результатом <подзапроса> (<subquery>). Если DISTINCT указано, то результатом <подзапроса> (<subquery>) является множество значений, получаемое из этого мультимножества удалением любых избыточных дублирующих значений.
Если R - сгруппированная таблица, то <выражение,
вырабатывающее значение> (<value expression>) применяется к каждой
группе R, образуя мультимножество из n значений, где n - число групп в R.
Когда <выражение, вырабатывающее значение> (<value expression>)
применяется к данной группе R, эта группа является аргументом или источником
аргумента каждой <спецификации функции над множеством> (<set
function specification>) в <выражении, вырабатывающем значение>
(<value expression>). Если не указано ключевое слово DISTINCT, то это
мультимножество является результатом <подзапроса> (<subquery>).
Если DISTINCT указано, то результатом <подзапроса> (<subquery>)
является множество значений, получаемое из этого мультимножества удалением
любых избыточных дублирующих значений.
Применимые привилегии для каждого <имени таблицы> (<table name>), содержащегося в <выражении, вырабатывающем таблицу> (<table expression>), должны включать SELECT.
Замечание:
"Применимые <привилегии> (<privileges>)" для <имени таблицы> (<table name>) определяются в 6.10 ,
"<определение привилегий> (<privileges definition>)".
Пусть R обозначает результат <выражения, вырабатывающего таблицу> (<table specification>).
Степень таблицы, специфицированной через <спецификацию запроса> (<query specification>) равна мощности <списка выборки> (<select list>).
<Список выборки> (<select list>) "*" эквивалентен последовательности <выражений, вырабатывающих значение> (<value expression>), в которой каждое <выражение, вырабатывающее значение> (<value expression>) является <спецификацией столбца> (<column specification>), указывающей на столбец R, и каждый столбец R указывается ровно один раз. Столбцы указываются в порядке возрастания номеров их исходных позиций внутри R.
Каждая <спецификация столбца> (<column specification>) в каждом <выражении, вырабатывающем значение> (<value expression>) должна однозначно указывать на столбец R. <Ключевое слово> (<key word>) DISTINCT не должно указываться более одного раза в <спецификации запроса> (<query specification>) за исключением любого <подзапроса> (<subquery>) этой <спецификации запроса> (<query specification>).
Если R - это сгруппированное представление, то <список выборки> (<select list>) не должен содержать <спецификацию функции над множеством> (<set function specification>).
Если R - это сгруппированная таблица, то каждая <спецификация столбца> (<column specification>) в каждом <выражении, вырабатывающем значение> (<value expression>) должна указывать на столбец группирования или быть специфицированной внутри <спецификации функции над множеством> (<set function specification>). Если R - это не сгруппированная таблица и какое-либо <выражение, вырабатывающее значение> (<value expression>) включает <спецификацию функции над множеством> (<set function specification>), то каждая <спецификация столбца> (<column specification>) в любом <выражении, вырабатывающем значение> (<value expression>) должна быть указана внутри <спецификации функции над множеством> (<set function specification>).
Каждый столбец таблицы, являющейся результатом <спецификации запроса> (<query specification>), имеет тот же тип данных, длину, точность и масштаб, что и <выражение, вырабатывающее значение> (<value expression>), из которого он получен.
Если i-ое <выражение, вырабатывающее значение> (<value expression>) в <списке выборки> (<select list>) состоит из единственной <спецификации столбца> (<column specification>), то i-ый столбец результата есть именованный столбец с <именем столбца> (<column name>), соответствующим <спецификации столбца> (<column specification>). В противном случае i-ый столбец является неименованным.
На столбец таблицы, которая является результатом <спецификации столбца> (<column specification>), накладывается ограничение содержать только не неопределенные значения в том и только в том случае, когда это именованный столбец с ограничением содержать только не неопределенные значения.
<Спецификация запроса> (<query specification>) является изменяемой (updatable) в том и только в том случае, когда выдерживаются следующие условия:
a) Ключевое слово DISTINCT не указано.
b) Каждое <выражение, вырабатывающее значение> (<value expression>) в <списке выборки> (<select list>) состоит из <спецификации столбца> (<column specification>), и ни одна <спецификация столбца> (<column specification>) не появляется более одного раза.
c) <Раздел from> (<from clause>) <выражения, выраба тывающего таблицу> (<table expression>) специфицирует в точности одну <ссылку на таблицу> (<table reference>), и эта <ссылка на таблицу> (<table reference>) указывает либо на базовую таблицу, либо на порожденную таблицу, являющуюся изменяемой (updatable).
d) <Раздел where> (<where clause>) <выражения, вырабатывающего таблицу> (<table expression>) не содержит <подзапроса> (<subquery>).
e) <Выражение, вырабатывающее таблицу> (<table
expression>) не включает <раздела group by> (<group by
clause>) или <раздела having> (<having clause>).
Общие правила
Если R не является сгруппированной таблицей и <список выборки> (<select list>) включает <спецификацию функции над множеством> (<set function specification>), то R является аргументом или источником аргумента каждой <спецификации функции над множеством> (<set function specification>) в <списке выборки> (<select list>) и результат <спецификации запроса> (<query specification>) есть таблица, состоящая из одной строки. I-ое значение строки есть значение, специфицированное i-ым <выражением, вырабатывающим значение> (<value expression>).
Если R не является сгруппированной таблицей и <список выборки> (<select list>) не включает <спецификацию функции над множеством> (<set function specification>), то каждое <выражение, вырабатывающее значение> (<value expression>) применяется к каждой строке R, образуя таблицу из m строк, где m - мощность R. I-ый столбец таблицы содержит значения, полученные применением i-ого <выражения, вырабатывающего значение> (<value expression>). Если не указано ключевое слово DISTINCT, то эта таблица является результатом <спецификации запроса> (<query specification>). Если DISTINCT указано, то результатом <спецификации запроса> (<query specification>) является таблица, получаемая из этой таблицы удалением любых избыточных дублирующих значений.
Если R - сгруппированная таблица с нулевым числом групп, то результатом <спецификации запроса> (<query specification>) является пустая таблица.
Если R - сгруппированная таблица с одной или более групп, то каждое <выражение, вырабатывающее значение> (<value expression>) применяется к каждой группе R, образуя таблицу из m строк, где m - число групп в R. I-ый столбец таблицы содержит значения, полученные применением i-ого <выражения, вырабатывающего значения> (<value expression>). Когда <выражение, вырабатывающее значение> (<value expression>) применяется к данной группе R, эта группа является аргументом или источником аргумента каждой <спецификации функции над множеством> (<set function specification>) в <выражении, вырабатывающем значение> (<value expression>). Если не указано ключевое слово DISTINCT, то эта таблица является результатом <спецификации запроса> (<query specification>). Если DISTINCT указано, то результатом <спецификации запроса> (<query specification>) является таблица, получаемая из этой таблицы удалением любых избыточных дублирующих строк.
Строка является дубликатом другой строки в том и
только в том случае, когда все пары значений с одной и той же порядковой
позицией идентичны.
<Идентификатор полномочий схемы> (<schema
authorization identifier>) должен быть отличным от <идентификатора
полномочий схемы> (<schema authorization identifier>) любой другой
<схемы> (<schema>) в той же самой среде. Понятие среды
определяется в реализации.
Если <имя таблицы> (<table name>) содержит <идентификатор полномочий> (<authorization identifier>), то этот <идентификатор полномочий> (<authorization identifier>) должен быть таким же, как <идентификатор полномочий схемы> (<schema authorization identifier>) содержащей схемы.
<Имя таблицы> (<table name>) должно быть отличным от <имени таблицы> (<table name>) любого другого <определения таблицы> (<table definition>) или <определения представления> (<view definition>) содержащей <схемы> (<schema>).
<Определение таблицы> (<table definition>) должно содержать по меньшей мере одно <определение столбца> (<column definition>).
Областью действия <имени таблицы> (<table name>) является <определение таблицы> (<table definition>).
Описание таблицы, определенной через
<определение таблицы> (<table definition>) включает имя <имя
таблицы> (<table name>) и описание столбцов, специфицированное
каждым <определением столбца> (<column definition>. Описание
i-го столбца предоставляется i-ым <определением столбца> (<column
definition>).
Общие правила
<Определение таблицы> (<table
definition>) определяет базовую таблицу.
<Имя столбца> (<column name>) должно быть отличным от <имени столбца> (<column name>) любого другого <определения столбца> (<column definition>) содержащегося в <определении таблицы> (<table definition>).
I-ый столбец таблицы описывается i-ым <определением столбца> (<column definition>) в <определении таблицы> (<table definition>). Имя и тип данных столбца определяются <именем столбца> (<column name>) и <типом данных> (<data type>) соответственно.
Пусть C обозначает <имя столбца> (<column name>) в <определении столбца> (<column definition>).
Если указано NOT NULL, то неявно вводится следующее <определение проверочного ограничения> (<check constraint definition>): CHECK (C IS NOT NULL)
Если не указано NOT NULL и не указан <раздел умолчания> (<default clause>), то неявно вводится DEFAULT NULL.
Если указана <спецификация уникальности> (<unique specification>), то неявно вводится следующее <определение ограничения уникальности> (<unique constraint definition>):
<unique specification> (C)
Замечание: <Спецификация уникальности> (<unique specification>) определяется в 6.6, "<определение ограничения уникальности> (<unique constraint definition>)".
Если указана <спецификация ссылок> (<references specification>), то неявно вводится следующее <определение ограничения ссылок> (<referential constraint definition>):
FOREIGN KEY(C) <references specification>
Замечание: <Спецификация ссылок> (<references specification>) определяется в 6.7, "<определение ограничения ссылок> (<referential constraint definition>)".
Если указано CHECK, то каждая <спецификация столбца> (<column specification>) в <условии поиска> (<search condition>) должна ссылаться на столбец C, и неявно вводится следующее <определение проверочного ограничения> (<check constraint definition):
CHECK (<search condition>)
Описание столбца, определенного через
<определение столбца> (<column definition>), включает имя
<имя столбца> (<column name>) и тип данных, специфицированный
<типом данных> (<data type>).