Створення запитів мовою SQL

 

Для створення запитів для вирішення поставлених завданням задач використовуємо різні типи запитів в залежності від поставлених задач.

Запит на вибірку – інструкція “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));

 

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: