В общем случае для создания вычисляемого (производного) поля в списке SELECT следует указать некоторое выражение языка SQL.
В этих выражениях применяются арифметические операции сложения, вычитания, умножения и деления, а также встроенные функции языка SQL.
Можно указать имя любого столбца (поля) таблицы или запроса, но использовать имя столбца только той таблицы или запроса, которые указаны в списке предложения FROM соответствующей инструкции. При построении сложных выражений могут понадобиться скобки.
Стандарты SQL позволяют явным образом задавать имена столбцов результирующей таблицы, для чего применяется фраза AS.
Использование итоговых функций
С помощью итоговых (агрегатных) функций в рамках SQL-запроса можно получить ряд обобщающих статистических сведений о множестве отобранных значений выходного набора.
Пользователю доступны следующие основные итоговые функции:
Count (Выражение) - определяет количество записей в выходном наборе SQL-запроса;
Min/Max (Выражение) - определяют наименьшее и наибольшее из множества значений в некотором поле запроса;
Avg (Выражение) - эта функция позволяет рассчитать среднее значение множества значений, хранящихся в определенном поле отобранных запросом записей.
Sum (Выражение) - вычисляет сумму множества значений, содержащихся в определенном поле отобранных запросом записей.
Чаще всего в качестве выражения выступают имена столбцов. Выражение может вычисляться и по значениям нескольких таблиц.
Построение нетривиальных запросов с использованием оператора SELECT
Параметр Join
При работе в нормализованном окружении часто возникает ситуация, когда не вся необходимая информация находится в одной таблице. Именно в таких ситуациях необходимо применять параметр JOIN.
|
Параметр JOIN помещает (объединяет) информацию из двух таблиц в одно результирующее множество, которое можно представить в виде “виртуальной таблицы”. С этим множеством можно работать как с обычной таблицей и использовать его для других подзапросов.
Способ объединения таблиц задается выбором одного из четырех различных видов JOIN. Общим для всех видов JOIN является то, что они для одной записи некоторой таблицы находят одну или более соответствующих записей в других таблицах чтобы создать запись-супермножество, которая будет содержать поля обеих записей.
Базовый синтаксис JOIN выглядит следующим образом.
SELECT <SELECT-список >
FROM < первая_таблица>
<тип_объединения> <вторая_таблица>
[ON < условие_объединения >]
Параметр INNER JOIN является наиболее распространенным видом JOIN, он объединяет записи на основе одного или более общих полей, но возвращает только те записи, для которых имеет место соответствие по полям, указанным в JOIN.
SELECT <SELECT-список >
FROM < первая_таблица>
INNER JOIN <вторая_таблица>
ON < условие_объединения >
Если использовать * в списке полей вывода, тогда будут возвращены все столбцы таблиц.
Для того чтобы * использовать для отдельной таблицы, нужно указать следующим образом:
SELECT Orders.*, CompanyName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID
Если необходимо обратиться к столбцу, имя которого присутствует более одного раза в JOIN-результате, нужно полностью определить имя столбца:
Таблица.ИмяСтолбца, Псевдоним.ИмяСтолбца
|
OUTER JOIN
SELECT <SELECT-список >
FROM < первая_таблица (считается левой)>
{LEFT|RIGHT|FULL} [OUTER] JOIN <вторая_таблица (считается правой)>
ON < условие_объединения >
OUTER JOIN является включающим объединением. Объединение происходит по совпадающим данным, но также в случае LEFT включается вся информация из левой таблицы, RIGHT- из правой, FULL включает всю информацию из обеих таблиц.
CROSS JOIN (перекрестное объединение) объединяет каждую запись с одной стороны JOIN с каждой записью с другой стороны JOIN.
SELECT <SELECT-список >
FROM < первая_таблица >
CROSS JOIN <вторая_таблица >
UNION – специальный оператор, с помощью которого можно построить из двух или более запросов одно результирующее множество.
По сути работа этого параметра похожа на присоединение выходных данных одного запроса к выходным данным другого запроса:
- Все запросы, объединенные этим оператором должны иметь одинаковое количество столбцов в SELECT-списке.
- В качестве заголовков столбцов результирующего множества будут использоваться заголовки столбцов первого запроса.
- Тип данных каждого столбца должен быть хотя бы неявно совместим с типом данных соответствующего столбца другого запроса.
- По умолчанию используется режим вывода DISTINCT, а не ALL.