- •Язык структурированных запросов
- •История развития sql
- •Стандартизация
- •Описание
- •Операторы
- •Структура sql
- •Преимущества и недостатки
- •Устранение дублирующих строк
- •Операторы Реляционные операторы
- •Булевы операторы
- •Агрегирование данных
- •Упорядочивание значений полей с помощью раздела order by
- •Результат выполнения запроса
- •Соединение таблиц
- •Соединение таблиц при помощи связей. Внутреннее объединение
- •Внешнее объединение
- •Вложение запросов Специальные операторы any и all Оператор any
- •Операторы манипулирования данными
- •Insert into [поступление товара]
- •Inner join ([курс валюты]
- •Current Project (Текущий проект)
- •Объекты ado
Агрегирование данных
Существуют специальные функции агрегирования:
Функция |
Назначение |
Avg |
Среднее значение поля. |
Count |
Кол-во записей в таблице, удовлетворяющих условиям. |
Max |
Максимальное значение поля. |
Min |
Минимальное значение поля. |
Sum |
Суммирование численных значений поля. |
Пример 8. По таблице Поступление товара найти суммарное количество поставляемого товара. Результат вывести в графу - Итого.
SELECT sum(Поступление) as Итого
FROM [ПОСТУПЛЕНИЕ ТОВАРА];
Результат выполнения запроса
Раздел GROUP BY
Пример 9. На основе таблицы Поступление товара найти наибольшие поступления однотипного товара.
SELECT [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара] , MAX(Поступление) AS [Наибольшее поступление]
FROM [ПОСТУПЛЕНИЕ ТОВАРА]
GROUP BY [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара];
Результат выполнения запроса
Примечание: Если имя поля состоит из двух и более слов, нужно использовать квадратные скобки для идентификатора такого поля.
Раздел HAVING
Пример 10a. На основе таблицы Поступление товара найти наибольшие поступления товаров, превышающие 1000 ед.
SELECT [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара], MAX(Поступление) AS [Наибольшее поступление]
FROM [ПОСТУПЛЕНИЕ ТОВАРА]
GROUP BY [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара]
HAVING MAX(Поступление)>1000;
Результат выполнения запроса
В запросе можно использовать разделы HAVING и WHERE.
Пример 10b. На основе таблицы Поступление товара найти наибольшие поступления товаров, превышающие 1000 ед., которые поступили 14.03.2007
SELECT [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара], Max(Поступление) AS [Наибольшее поступление], [ПОСТУПЛЕНИЕ ТОВАРА].[дата поступления]
FROM [ПОСТУПЛЕНИЕ ТОВАРА]
WHERE [ПОСТУПЛЕНИЕ ТОВАРА].[Дата поступления]=#3/14/2007#
GROUP BY [ПОСТУПЛЕНИЕ ТОВАРА].[Код товара], [ПОСТУПЛЕНИЕ ТОВАРА].[дата поступления]
HAVING Max(Поступление)>1000;
Результат выполнения запроса
Упорядочивание значений полей с помощью раздела order by
Пример 11. Упорядочить информацию таблицы Поступление товара по дате поступления в порядке возрастания и цене товара в порядке убывания.
SELECT *
FROM [ПОСТУПЛЕНИЕ ТОВАРА]
ORDER BY [ПОСТУПЛЕНИЕ ТОВАРА].[Дата поступления], цена DESC;
Результат выполнения запроса
Пример 12. Из таблицы Поступление товара найти наибольшие цены товаров, превышающие 500 евро, соответствующие разным товарам. Упорядочить записи в исходной таблице в порядке убывания сумм.
SELECT [ПОСТУПЛЕНИЕ ТОВАРА].[код товара], Max(цена) AS [наибольшая цена]
FROM [ПОСТУПЛЕНИЕ ТОВАРА]
GROUP BY [ПОСТУПЛЕНИЕ ТОВАРА].[код товара]
HAVING Max(цена)>500
ORDER BY Max(цена) DESC;
Результат выполнения запроса
Соединение таблиц
Операция соединения таблиц – JOIN – самая мощная операция реляционных баз данных.
<имя таблицы><поля>
Соединение таблиц при помощи связей. Внутреннее объединение
Предположим, что таблицы Поступление товара и Товары связаны между собой по полю Код товара
В запросе такое объединение называется симметричным объединением (INNER JOIN).
Операция INNER JOIN
Синтаксис этой операции:
FROM таблица1 INNER JOIN таблица2 ON таблица1.поле1= таблица2.поле2
Пример 13a. Учитывая схему данных, необходимо найти все поступившие товары, цена которых превышает 500 евро.
SELECT ТОВАРЫ.[наименование товара], поступление, [ПОСТУПЛЕНИЕ ТОВАРА].[дата поступления], цена
FROM ТОВАРЫ INNER JOIN [ПОСТУПЛЕНИЕ ТОВАРА] ON ТОВАРЫ.[код товара] = [ПОСТУПЛЕНИЕ ТОВАРА].[код товара]
WHERE цена>500;
Результат выполнения запроса