Связывание таблиц

С помощью языка SQL можно создавать запросы, позволяющие извлечь данные из нескольких таблиц. Одна из возможностей сделать это заключается в связывании таблиц по одному или нескольким полям. Обратите внимание на то, что без связывания таблиц в результате запроса получится набор данных, содержащий все возможные комбинации строк каждой из исходных таблиц (известные также как декартово произведение):

SELECT ProductName, CategoryName FROM Products, Categories

В то время как запрос, показанный ниже, приводит к отображению списка продуктов с указанием, к какой категории принадлежит данный продукт:

SELECT ProductName, CategoryName

FROM Products, Categories

WHERE Products.CategorylD = Categories.CategorylD

Для наглядности можно сравнить результаты этих двух запросов.

В общем случае синтаксис для связывания таблиц имеет вид:

SELECT column-list

FROMtable1,table2

WHERE table! .column 1=table2.column2

Для вычисления суммарных значений на основе данных одной или нескольких таблиц можно использовать предложение GROUP BY:

GROUP BY {поле1} [,...]

Например, следующий запрос связывает две таблицы, сортирует их по полю CustomerlD, для каждого значения CustomerlD создает одну строку в результирующем наборе данных и вычисляет количество значений поля OrderlD для каждого значения CustomerlD:

SELECT Customers.CustomerlD,

COUNT (Orders. OrderlD) AS OrdersCount

FROM Customers INNER JOIN Orders

ON Customers.CustomerlD = Orders.CustomerlD

GROUP BY Customers.CustomerlD

ORDER BY OrdersCount DESC

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

Помимо перечисленных выше агрегатных функций можно использовать также математические и строковые функции, приведенные ниже:

Avg - Вычисляет среднее

Count - Вычисляет количество непустых значений в данной колонке

Max - Вычисляет наибольшее значение в колонке

Min - Вычисляет наименьшее значение в колонке

Sum - Вычисляет сумму значений в колонке

. Математические и строковые функции SQL:

ABS Возвращает абсолютное значение числа
CEIL Округляет дробное число
FLOOR Удаляет дробную часть числа
GREATEST Возвращает наибольшее из двух значений.
LEAST Возвращает наименьшее из двух значений.
MOD Возвращает остаток от деления одного числа на другое
POWER Возвращает значение, равное одному числу в степени.
ROUND Округляет число с точностью до указанного десятичного знака
SIGN Возвращает -1, если число отрицательное, и 1, если положительное
SQRT Квадратный корень
LEFT Возвращает указанное число знаков строки, начиная слева.
RIGHT Возвращает указанное число знаков строки, начиная справа
UPPER Заменяет все буквы в строке на прописные
LOWER Заменяет все буквы в строке на строчные
INITCAP Расставляет заглавные буквы в начале слов в строке
LENGTH Вычисляет число символов в строке
LPAD Добавляет указанный символ в левую часть строки в количестве, необходимом для того, чтобы строка имела заданную длину
RPAD Добавляет указанный символ в правую часть строки в количестве, необходимом для того, чтобы строка имела заданную длину
SUBSTR Извлекает подстроку нужной длины из строки, начиная с номера указанной позиции