С помощью языка 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 | Извлекает подстроку нужной длины из строки, начиная с номера указанной позиции |