Для створення запитів для вирішення поставлених завданням задач використовуємо різні типи запитів в залежності від поставлених задач.
Запит на вибірку – інструкція “SELECT” призначена для отримання записів з бази даних у вигляді набору записів із збереженням його в новому об’єкті RECORDSET. У додатку можна потім маніпулювати цим набором записів – виводити записи на екран у формі, додавати, змінювати та видаляти їх.
Для додання в запит всі поля з джерела даних, можна вказати їх все окремо в реченні SELECT або використовувати знак підстановки - зірочку (*). Якщо використовується зірочка, при виконанні запиту Access визначає, які поля містить джерело даних, і включає всі ці поля в запит.
Пропозиції SQL змінюють умови, використовувані для визначення даних,
які потрібно відібрати або обробити.
Пропозиція FROM – призначена для вказівки імені таблиці, з якої повинні бути вибрані записи
Для створення запитів SQL використовується форма для вводу инструкцій SQL. Рисунок 15 – Область введення інструкцій запиту SQL
|
|
Рисунок 15
Зробимо запит на отримання всієї інформації про клієнтів:
SELECT *
FROM Клiєнти
Зробимо запит на отримання порядку інформацію про клієнтів, у яких не вказана адреса:
SELECT Клієнти.телефон, Клієнти.[код клієнта], Клієнти.прізвище, Клієнти.ім’я, Клієнти.[по батькові], Клієнти.телефон
FROM Клієнти
WHERE (((Клієнти.[адреса]) Is Null))
ORDER BY Клієнти.прізвище, Клієнти.ім’я;
Пропозиція WHERE – спеціфікує умови, яким повинні задовольняти вибрані записи
Пропозиція GROUP BY – використовується для розподілу вибраних записів в певні групи
Пропозиція ORDER BY – використовується для специфікацій порядку сортування обраних записів
Виконаємо запит на отримання прізвища та імена клієнтів – абонентів мережі «КиівСтар»(номери починаються на 067 та 097):
SELECT Клієнти.[код клієнта], Клієнти.прізвище, Клієнти.ім’я, Клієнти.[по батькові], Клієнти.телефон
FROM Клієнти
WHERE (((Клієнти.телефон) Like "097*"));
Оператор LIKE - використовується в запиті для пошуку даних, відповідних певним шаблоном. Наприклад потрібно знайти клієнта за номером телефону
Оператор OR – використовується для об’єднання декількох умов шляхом операції логічного додавання
Зробимо запит на кількість клієнтів які користуються послугами магазину:
SELECT Покупка.[код клієнта], Клієнти.прізвище, Клієнти.ім’я, Клієнти.[по батькові]
FROM Покупка INNER JOIN Клієнти ON Покупка.[код клієнта] = Клієнти.[код клієнта];
INNER JOIN, ON - Объединяет записи из двух таблиц, если в связующих полях этих таблиц содержатся одинаковые значения.
Зробимо запит на отримання мінімальної ціни на відеопрогравач:
|
|
SELECT Товари.назва, Min(Товари.[ціна за одиницю]) AS [Min-ціна за одиницю]
FROM Товари
GROUP BY Товари.назва
HAVING (((Товари.назва)="відеопрогравач"));
Пропозиція HAVING – оголошує умову, якій повинна задовольняти
кожна група записів, умова відбору для групи
Агрегатна функція MIN – повертає найменше значення в специфікованому полі
Оператор AS – дозволяє змінити ім’я поля для зручності перегляду запиту
Зробимо запит на отриманная інформації про товари які купував клієнт:
SELECT Клієнти.прізвище, Клієнти.ім’я, Клієнти.[код клієнта], Покупка.[код товару], Товари.наименование, Товари.назва
FROM Товари INNER JOIN (Клієнти INNER JOIN Покупка ON Клієнти.[код клієнта] = Покупка.[код клієнта]) ON Товари.[код товару] = Покупка.[код товару]
GROUP BY Клієнти.прізвище, Клієнти.ім’я, Клієнти.[код клієнта], Покупка.[код товару], Товари.наименование, Товари.назва
HAVING (((Клієнти.прізвище)="Николос") AND ((Клієнти.ім’я)="Николай"));
Запит на додавання – додає записи в таблицю.
INSERT INTO - инструкция добавляет одну или несколько записей в таблицу (выполняет запрос на добавление).
VALUES – указывает значения которые необходимо добавить
UPDATE - Создает запрос на обновление, изменяющий значения полей указанных таблиц на основании заданных условий.
SET – устанавливает новое значение
Створимо запит на додавання інформаціі про нового виробника:
INSERT INTO Виробники ([код виробника], назва)
VALUES ('123', 'new');
Запит на оновлення – це запит який дозволяє оновити інформацію в базі даних
Зробимо запит на оновлення цін, збільшення ціни на 10% на всі телевізори:
UPDATE Товари SET Товари.[ціна за одиницю] = [Цена]+[Цена]*10
WHERE (((Товари.назва)="телевізор"));
Зробимо запит на оновлення номера телефона в таблиці “клієнти”:
UPDATE Клієнти
Set Телефон="380932828114"
WHERE [Код клієнта]=4
Зробимо копію інформації про обрані товари заданого виробника в нову таблицю:
SELECT Товари.[код товару], Товари.назва, Товари.[код категорії], Товари.[одиниця вимірювання], Товари.[ціна за одиницю], Товари.[код виробника], Товари.наименование INTO [Новая таблица]
FROM Товари
WHERE (((Товари.[код виробника])=123));
Запит на видалення – це запит що який дозволяє видалити дані в базі даних
DELETE – инструкція видалення рядків з таблиці
Зробимо видалення інформації про покупки минулого року:
DELETE Покупка.[№ рахунку], Покупка.[код товару], Покупка.кількість, Покупка.[код клієнта], Покупка.дата
FROM Покупка
WHERE ((Year([Покупка]![дата])<2018));
Запит на отримання категорій та товарів які не куплялись в першому кварталі поточного року:
SELECT Категорії.[код категорії], Категорії.назва, Товари.наименование, Товари.[код товару], Покупка.дата, DatePart("q",[Покупка]![дата],2) AS Квартал
FROM (Категорії INNER JOIN Товари ON Категорії.[код категорії] = Товари.[код категорії]) INNER JOIN Покупка ON Товари.[код товару] = Покупка.[код товару]
WHERE (((Покупка.дата) Like "*2018") AND ((DatePart("q",[Покупка]![дата],2))=1));
Параметр YEAR – задает условие для выборки по году
Функция DatePart – використовується для обчислення дати та повернення певного проміжка часу
Параметр “q” – позволяет вычислять кварта
Синтаксис DatePart:DatePart (інтервал, дата [, перший день тижня] [, перший тиждень року])
2-потому что у нас день недели начинается с понедельника
Отримуємо суми проданих товарів в поточному році за два запити:
1 Запит на відбір найменувань товарів та суми їх продажу за 2018 рік:
SELECT Товари.[код товару], Товари.назва, Товари.[ціна за одиницю], Покупка.кількість, Покупка.дата, Sum([ціна за одиницю]*[кількість]) AS Сума
FROM Товари INNER JOIN Покупка ON Товари.[код товару] = Покупка.[код товару]
GROUP BY Товари.[код товару], Товари.назва, Товари.[ціна за одиницю], Покупка.кількість, Покупка.дата
|
|
HAVING (((Покупка.дата) Like "*2018"));
2 Запит на отримання ітогу суми проданих товарів:
SELECT Sum([Суми проданих товарів].Сума) AS [Sum-Сума]
FROM [Суми проданих товарів];
Отримання суми покупок клієнта в магазині:
SELECT Клієнти.прізвище, Клієнти.ім’я, Sum([Покупка]![кількість]*[Товари]![ціна за одиницю]) AS Підсумок
FROM Клієнти INNER JOIN (Товари INNER JOIN Покупка ON Товари.[код товару] = Покупка.[код товару]) ON Клієнти.[код клієнта] = Покупка.[код клієнта]
GROUP BY Клієнти.прізвище, Клієнти.ім’я, Покупка.кількість, Товари.[ціна за одиницю]
HAVING (((Клієнти.прізвище)="Николос") AND ((Клієнти.ім’я)="Николай"));
Операція AND – об’єднання декількох умов шляхом операції логічного множення
Агрегатна функція COUNT – повертає кількість записів, повернутих запитом
Запит на отримання кількості виробників які мають менше 5 найменувань товарів в магазині:
SELECT Виробники.назва, Товари.наименование, Count(Товари.наименование) AS [Count-наименование]
FROM Виробники INNER JOIN Товари ON Виробники.[код виробника] = Товари.[код виробника]
GROUP BY Виробники.назва, Товари.наименование
HAVING (((Count(Товари.наименование))<5));