В качестве примера запроса на создание таблицы приведем запрос на создание таблицы пользователей, которую будем использовать для авторизации:
Зарегистрируйся в два клика и получи неограниченный доступ к материалам,а также промокод на новый заказ в Автор24. Это бесплатно.
CREATE TABLE [пользователи]
(
ID AUTOINCREMENT,
Login VARCHAR(64),
Password VARCHAR(64),
Role VARCHAR(64)
)
Результатом является таблица со следующим дизайном :
Запрос на вставку данных
Теперь наполним таблицу «Пользователи» данными. В MS Access это удобнее делать через визуальный редактор, но для примера приведем запрос:
INSERT INTO [пользователи] (LogIn, Password, Role)
VALUES
("Admin", "admin", "Администратор");
После выполнения данной операции запись появится в таблице :
Запрос на обновление данных
В качестве примера запроса на обновление приведем запрос, который будет доступен администратору: обновление стоимость материалов на некоторый коэффициент:
UPDATE материалы SET Себестоимость = Себестоимость * [Введите коэффициент изменения цены];
Здесь переменную [Введите коэффициент изменения цены] пользователь будет задавать сам.
Например, дана таблица материалов со следующими данными :
При запуске запроса на выполнение пользователю будет предложено ввести коэффициент. Допустим, он хочет поднять цены на 50% :
После выполнения запроса с таким параметром в таблице будут следующие данные :
Данный запрос хранится в базе под названием MaterialsPriceUpdate.
Запрос на удаление
В качестве примера запроса на удаление приведем удаление из таблицы фотосессий:
DELETE FROM фотосессии WHERE Название = 'В стиле ретро'
После выполнения этого запроса в таблице не будет записи с названием «В стиле ретро».
Параметрический запрос на выборку
В качестве примера приведем запрос, который выдает ближайшие фотосессии, то есть фотосессии, которые забронированы на ближайшие X дней, где X – задаваемый пользователем параметр:
SELECT клиенты.Фамилия AS [Фамилия клиента], фотосессии.Название AS [Название фотосессии], сессии.Дата, DateDiff("d", Now(), [сессии.Дата]) AS [Дней осталось]
FROM ([Забронированные фотосессии] AS сессии INNER JOIN клиенты ON сессии.Код_Клиента = клиенты.Код) INNER JOIN фотосессии ON сессии.Код_Фотосессии = фотосессии.Код
WHERE ABS(DateDiff('d', сессии.Дата, Now())) INT([Дней до фотосессии]);
Результат выполнения данного запроса на нашей базе (запрос выполнен 22 мая 2020 г., X = 7) :
Данный запрос хранится в базе с названием ClosestPhotosessions
Зарегистрируйся, чтобы продолжить изучение работы
. Другие параметрические запросы в базе:
MaterialsRemain – выдает остаток материалов с названием, отфильтрованным по параметру, вводимым пользователем (используется LIKE)
ServicesInRange – выдает услуги фотопечати в ценовом диапазоне (от и до), задаваемом пользователем (используется BETWEEN).
AppropriatePhotosessions – выдает фотосессии, которые могут вместить вводимое пользователем количество человек.
ClientsFind – выдает информацию о клиенте по вводимой пользователем фамилии.
Запрос с групповыми операциями
В качестве примера запроса с групповой операцией приведем запрос, который подсчитывает количество сделанных клиентом заказов:
SELECT заказы.Код_Клиента, COUNT(заказы.Код) AS [Количество заказов]
FROM заказы
GROUP BY заказы.Код_Клиента;
Результат выполнения запроса :
Данный запрос хранится в базе с названием ClientsOrdersCount. Другие запросы с группировкой в базе:
MaxClientOrderSum – определяет самый дорогой заказ для каждого клиента
MaterialsServicesCount – определяет, для оказания скольких услуг используется каждый материал
Перекрестный запрос
Приведем пример перекрестного запроса. Запрос Orders_Crosstab показывает, какие заказы делали клиенты:
TRANSFORM Sum(заказы.Количество) AS [Количество заказанных единиц]
SELECT клиенты.Фамилия, Sum(заказы.Количество) AS [Общее количество заказанных единиц]
FROM [услуги фотопечати] INNER JOIN (клиенты INNER JOIN заказы ON клиенты.Код = заказы.Код_Клиента) ON [услуги фотопечати].Код = заказы.Код_Услуги
WHERE (((клиенты.Код)=[Код_Клиента]) AND (([услуги фотопечати].Код)=[Код_услуги]))
GROUP BY клиенты.Фамилия
PIVOT [услуги фотопечати].Название;
Построить такой довольно сложный запрос позволяет мастер запросов MS Access.
Результат выполнения данного запроса :
Примером еще одного перекрестного запроса в базе является PhotoProps_Crosstab, показывающий какой реквизит использовался в фотосессиях.
Вычисляемые поля
Примером запроса с вычисляемым полем является запрос AvgOrder, который вычисляет стоимость среднего заказа в базе:
SELECT Avg([заказы].[Количество]) AS [Среднее количество единиц в заказе]FROM заказы;
Результат выполнения :
Еще одним примером запроса с вычисляемым полем является MaxClientOrderSum, определяющий самый дорогой заказ для каждого клиента.
Запрос Left Join
Примером запроса с Left Join является PropsToPhotosession, который выдает, какой реквизит назначен на фотосессию (для фотосессий, на которые не назначен реквизит, отображается пустая строка):
SELECT сессии.Дата, фотосессии.Название, реквизит.Название
FROM (([Забронированные фотосессии] AS сессии LEFT JOIN [реквизит на фотосессию] ON [реквизит на фотосессию].Код_забронированной_фотосессии = сессии.Код) INNER JOIN фотосессии ON фотосессии.Код = сессии.Код_фотосессии) LEFT JOIN реквизит ON реквизит.Код = [реквизит на фотосессию].Код_реквизита;
Результат выполнения :
Запрос Right Join
Примером запроса с Right Join является UnusedProps, который выдает список реквизита, не используемого ни в одной фотосесии:
SELECT реквизит.Название
FROM [реквизит на фотосессию] RIGHT JOIN реквизит ON [реквизит на фотосессию].Код_реквизита = реквизит.Код
WHERE [реквизит на фотосессию].Код_забронированной_фотосессии IS NULL;
Результат выполнения :
Экранные формы
Одним из удобных элементов пользовательского интерфейса, предоставляемого MS Access, являются формы
50% курсовой работы недоступно для прочтения
Закажи написание курсовой работы по выбранной теме всего за пару кликов. Персональная работа в кратчайшее время!