Skip to content

13. Табличные выражения Transact SQL

Pandas edited this page Jan 7, 2018 · 1 revision

Табличное выражение предоставляет некую таблицу. Табличное выражение содержит предложение FROM, за которым необязательно следуют предложения WHERE, GROUP BY и HAVING.

GROUP BY используется для группировки вместе тех строк таблицы, которые имеют те же самые значения во всех перечисленных колонках. Порядок, в котором перечисляются колоки значения не имеет. Эффект группировки состоит в комбинировании каждого списка строк, имеющих общие значения колонок в одну сгруппированную строку, которая представляет все строки в данной группе. Это осуществляется исключением избыточности в выводе и/или подсчётом агрегатов, которые применяются к группам.

Группировка без агрегирующих выражений эффективно подсчитывает список отдельных значений в колонке. Это же может быть достигнуто, используя предложение DISTINCT.

Если таблица была сгруппирована с помощью предложения GROUP BY, но интерес представляют только определённые группы, можно использовать предложение HAVING, которое очень похоже на предложение WHERE, но только для удаления групп из результата.

Предложение FROM

FROM создаёт таблицу из одной или более других таблиц, которые задаются списком разделённых запятыми ссылок на таблицы:

FROM ссылка_на_таблицу [, ссылка_на_таблицу [, ...]]

Соединённые таблицы

Соединённая таблица — это таблица, производная от двух других (реальных или в свою очередь производных) таблиц, полученая в соответствии с правилами определённого типа соединения. Доступные типы соединения: inner (внутреннее), outer (внешнее) и cross (перекрёсное).

pic

Слова INNER и OUTER являются необязательными во всех формах. INNER применяется по умолчанию; LEFTRIGHT и FULL неявно указывают на внешнее (outer) соединение. Условие соединения задаётся в предложениях ON или USING, или неявно, с помощью слова NATURAL.

Предложение ON является наиболее обычным способом задать условие соединения: в нём указывается логическое выражение того же типа, что используется в предложении WHERE. Пара строк из T1 и T2 считается совпавшей, если для неё, выражение, заданное в ON принимает значение истина.

USING имеет более краткую форму: в ней указывается разделённый запятыми список имён колонок, которые должны быть общими в соединяемых таблицах и условия соединения, задавая равенство каждой из этих пар колонок.

NATURAL — это краткая форма USING: она формирует список USING, содержащий все имена колонок, которые есть в обеих входных таблицах. Как и с USING, эти колонки появляются в выходной таблице только один раз. Если общих колонок нет, NATURAL ведёт себя как CROSS JOIN.

Псевдонимы таблиц и колонок

В сложных ссылках на таблицы, для дальнейших ссылок в остальной части запроса, могут быть использованы временные имена. Они называются псевдонимами таблиц.

FROM ссылка_на_таблицу AS псевдоним

Ключевое слово AS является необязательным. Псевдоним может быть любым идентификатором. Псевдоним даёт новое имя ссылающееся на ту же таблицу в текущем запросе — поэтому где-либо ещё в текущем запросе не разрешается ссылаться на таблицу по первоначальному имени. Псевдноним также требуется, если ссылка на таблицу является подзапросом.

Clone this wiki locally