Помощь в учёбе, очень быстро...
Работаем вместе до победы

SQL в Visual Basic

РефератПомощь в написанииУзнать стоимостьмоей работы

В инструкциях языка ANSI SQL предусмотрены так называемые агрегирующие функции, которые определяют количество записей, вычисляют суммы всех значений полей в наборе, находят минимальные или максимальные, а также средние значения. К агрегирующим функциям относятся функции COUNT, SUM, MAX, MIN и AVG. SELECT а. НаимДетали AS, Ь. Количество AS Количество FROM Детали AS а, ИнфОДетали AS b WHERE а… Читать ещё >

SQL в Visual Basic (реферат, курсовая, диплом, контрольная)

В Visual Basic язык SQL применяется в основном для выполнения запросов, хотя очень удобно также удалять, добавлять и обновлять записи баз данных. Используя SQL-запросы, можно выбирать из таблиц базы данных только необходимые записи. При этом мы можем получить доступ не просто к одной таблице, а к сложной выборке из связанных между собой таблиц или наборов данных.

Для начала работы с SQL нужно выбрать в левой части главного окна Access в меню «Объекты» опцию «Запросы» и дважды щёлкнуть командуСоздание запроса в режиме конструктора.

Диалоговое окно .

Рис. 11 Диалоговое окно «Создание запроса в режиме конструктора»

Появившееся окно «Добавление таблицы» нужно закрыть. Выберем команду «Режим SQL» в меню Вид.

Синтаксис самой простой SELECT-инструкции (SQL — запроса) будет иметь вид: SELECT * FROM table (* - выбор значений всех полей).

В SELECT — инструкции можно указать конкретные наименования используемых полей некоторой таблицы, используя следующий синтаксис:

SELECT fieldl [, field2 [,…]] FROM table.

Hp: SELECT КодДетали, НаимДетали FROM Детали;

Запрос 2 (результат предыдущего запроса).

Рис. 12 Запрос 2 (результат предыдущего запроса)

Следующая инструкция позволяет исправить ситуацию с «плохими» наименованиями в запросе:

SELECT КодДетали AS [Код детали], Наим Детали AS [Наименование детали] FROM Детали;

Запрос З.

Рис. 13 Запрос З

Ключевое слово WHERE в синтаксисе инструкции SELECT позволяет указывать определенные типы записей, которые должны попадать в набор. При этом инструкция SELECT имеет следующий синтаксис:

SELECT {* fieldl [AS alias 1] [, field2 [AS alias2] [,…]]} FROM table [WHERE criteria].

Например можно запросить те детали, цены которых не более 500 денежных единиц:

SELECT Код Детали AS [Код детали], Наим Детали AS [Наименование детали], ЦенаДетали AS [Цена детали] FROM Детали WHERE ЦенаДетали<500;

Запрос 4.

Рис. 14 Запрос 4

В области слова WHERE можно располагать довольно сложное условное выражение с использованием знаков логических операций и функций.

Hp: SELECT Код Детали AS [Код детали], Наим Детали AS [Наименование детали], ЦенаДетали AS [Цена детали] FROM Детали.

WHERE НаимДетали Like «SPC*» ;

Позволяет получить только те записи, у которых в наименовании первые пять символов совпадают со строкой «SPC» .

Запрос 5.

Рис. 14 Запрос 5

Оператор LIKE можно использовать для контекстного поиска, например, если ввести текстовую строку, содержащую часть наименования деталей, то эту строку легко использовать в виде шаблона. Следующая инструкция выполняет поиск записей, в которых наименование содержит в качестве подстроки строку «Воу» SELECT Код Детали AS [Код детали], НаимДетали AS [Наименование детали], ЦенаДетали AS [Цена детали] FROM Детали WHERE НаимДетали Like «*Boy*» ;

Запрос 6.

Рис. 15 Запрос 6

Результирующие данные запроса можно форматировать с использованием, например, функции Format.

SELECT НаимДетали AS [Наименование детали], Рогта1(ЦенаДетали*1.2," #####0.00р") AS [Цена детали] FROM Детали WHERE ЦенаДеталиООО;

Функция Format в качестве первого аргумента получает произведение ЦенаДетали*1.2. Таким образом, можно получить другую цену из некоторой базовой.

Для форматирования выводимых в запросе данных можно использовать функции преобразования строк. Например, в следующем запросе наименования товара выводятся символами верхнего регистра, поскольку здесь используется функция StrConv:

SELECT 8и" Сот/(НаимДетали, 1) AS [Наименование детали], ЦенаДетали AS [Цена детали] FROM Детали;

Запрос 8.

Рис. 17 Запрос 8

Следующая инструкция позволяет получить наименования (из таблицы Детали) и количество (из таблицы ИнфОДетали) деталей:

SELECT Детали. Наим Детали AS [Наименование детали], ИнфОДетали.Количество.

FROM Детали, ИнфОДетали.

WHERE Детали. КодДетали=ИнфОДетали.КодДетали;

Запрос 9.

Рис. 18 Запрос 9

Выражение WHERE Детали. КодДетали=ИнфОДетали.КодДетали используется для связи таблиц Детали и ИнфОДетали по ключевому полю КодДетали.

Результат выполнения предыдущей инструкции напоминает инвентаризационную ведомость без указания места, где находится деталь. Следующая инструкция позволяет получить наименование (из таблицы Детали) и количество (из таблицы ИнфОДетали) только для тех кодов деталей, записи которых в таблице ИнфОДетали в поле № Склада содержат строку «2»:

SELECT Детали. Наим Детали AS [Наименование детали], ИнфОДетали. Количество AS Количество FROM Детали, ИнфОДетали.

WHERE ИнфОДетали.№Склада-2' And Детали. Код Детали^ ИнфОДетали. КодДетали;

При помощи локальных псевдонимов можно сократить предыдущую инструкцию:

SELECT а. НаимДетали AS [Наименование детали], Ь. Количество AS Количество.

FROM Детали AS а, ИнфОДетали AS b.

WHERE Ь.№Склада-2' And а. КодДетали=Ь.КодДетали;

Запрос 10.

Рис. 19 Запрос 10

Наименования товаров в наших таблицах и выводимых наборах не отсортированы. Это бывает особенно заметно, когда данных очень много, а нужно найти только некоторые из них. Для сортировки данных в инструкции SELECT имеются слова ORDER BY.

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

SELECT а. Наим Детали AS [Наименование детали], Ь. Количество AS Количество FROM Детали AS а, ИнфОДетали AS b.

WHERE Ь.№Склада='2' And а. КодДетали=Ь.КодДетали ORDER BY а. НаимДетали;

Запрос 11.

Рис. 20 Запрос 11

В инструкциях языка ANSI SQL предусмотрены так называемые агрегирующие функции, которые определяют количество записей, вычисляют суммы всех значений полей в наборе, находят минимальные или максимальные, а также средние значения. К агрегирующим функциям относятся функции COUNT, SUM, MAX, MIN и AVG.

Функция COUNT используется для определения количества записей в запросе. Например, можно вычислить количество записей в таблице ИнфО Детали:

SELECT СОШЧГГ (НаимДетали) AS [Всего наимнований] FROM ИнфОДетали;

Запрос 12.

Рис. 21 Запрос 12

Следующая инструкция вычисляет количество записей, в которых значение поля ЦенаДетали меньше 200:

SELECT СОШЧТ (НаимДетали) AS [Всего наимнований].

FROM Детали.

WHERE ЦенаДетали<200;

Запрос 13.

Рис. 22 Запрос 13

Функция SUM позволяет для группы строк вычислять итоговую сумму значений некоторого поля, например:

SELECT 8ЦМ (Количество) AS [Общее количество товаров] FROM ИнфОДетали;

Запрос 14.

Рис. 23 Запрос 14

При использовании функции SUM можно ограничить количество записей запроса при помощи некоторого условия, например:

SELECT 8ЦМ (Количество) AS [Общее количество товаров] FROM ИнфОДетали WHERE №Склада=Т;

Запрос 15.

Рис. 24 Запрос 15

Функция AVG в инструкции SELECT позволяет найти среднее значение для строк, входящих в запрос. Например, следующая инструкция определяет среднюю цену на товар, наименование которых начинаются со строки «(S*)» :

SELECT Рогта1(АУО (ЦенаДетали)," #####0.00р") AS [Среднее значение].

FROM Детали WHERE НаимДетали LIKE 'S*';

Запрос 16.

Рис. 25 Запрос 16

В инструкции SELECT для объединения значений в группы используется предложение GROUP BY.

Следующая инструкция имеет результатом список складов и суммарные количества товаров на каждом складе:

SELECT №Склада, 81Ж (Количество) AS Количества.

FROM ИнфОДетали.

GROUP BY №Склада;

Запрос 17.

Рис. 26 Запрос 17

Следующая инструкция позволяет получить список складов и суммарное количество товаров на них. Причем в список включаются только те склады, на которых суммарное количество товаров меньше чем 13 :

SELECT №Склада, 8ЦМ (Количество) AS Количества.

FROM ИнфОДетали.

GROUP BY №Склада.

HAVING SUM (Количество)<13;

Предложение HAVING налагает некоторые условия на выбранные посредством предложения GROUP BY данные.

Запрос 18.

Рис. 27 Запрос 18

Подзапросы в инструкции SELECT.

Подзапрос — это запрос, который размещается внутри другого запроса, а точнее, является частью предложения WHERE (или HAVING) основного запроса и заключается в круглые скобки. Запрос, содержащий подзапрос, называется сложным запросом. При выполнении сложного запроса сначала выполняется подзапрос (он для этого и заключается в скобки), а затем — основной запрос.

Если необходимо получить список товаров склада, на котором их больше всего, то для начала нам нужно определить этот склад. Для начала создается запрос, который возвратит код склада с наибольшим количеством товаров: SELECT ТОР 1 №Склада FROM ИнфОДетали GROUP BY №Склада ORDER BY SUM (Количество) Предложение TOP 1 указывает на то, что в результирующий набор попадает только одна запись, а поскольку набор сортируется (по убыванию) по суммарным количествам деталей, то в результате мы получаем код склада с наибольшим количеством деталей. Остается использовать ранее рассмотренный запрос, который возвращает список деталей для указанного кода склада, но если ранее мы указывали этот код, то теперь определяем его в подзапросе:

SELECT а. НаимДетали AS [Наименование детали], Ь. Количество AS Количество FROM Детали AS а, ИнфОДетали AS b WHERE а. КодДетали=Ь.КодДетали AND №Склада= (SELECT TOP 1 FROM ИнфОДетали GROUP BY №Склада ORDER BY SUM (Количество) DESC);

Запрос 19.

Рис. 28 Запрос 19

Целью следующего запроса является получение ведомости деталей склада, где имеется больше всего наименований (кодов) деталей.

SELECT а. НаимДетали AS [Наименование детали], Ь. Количество AS Количество FROM Детали AS а, ИнфОДетали AS b WHERE а. КодДетали=Ь.КодДетали AND Ь.№Склада= (SELECT TOP 1 №Склада FROM ИнфОДетали GROUP BY №Склада ORDER BY COUNT (Количество) DESC); Здесь в подзапросе вместо функции SUM используется COUNT — счетчик количества записей.

Рис. 29 Запрос20

Показать весь текст
Заполнить форму текущей работой