- •Створення sql-запитів в Microsoft Access
- •Освоїти технологію створення sql-запитів. Навчитися користуватися найпростішими операторами sql та одержати практику вибірки заданої інформації. Теоретичні відомості
- •Об’єднання таблиць по нерівності
- •Зовнішнє об’єднання таблиць
- •Порядок виконання роботи
- •Індивідуальні завдання
- •Контрольні запитання
Зовнішнє об’єднання таблиць
Операція об’єднання в SQL з’єднує інформацію із двох таблиць, формуючи пари стрічок із цих таблиць. Якщо стрічка однієї із таблиць не має пари, то внутрішнє об’єднання може привести до втрати інформації. У таких випадках використовують зовнішнє об’єдання таблиць. Зовнішнє об’єднання називається повним зовнішнім об’єднанням двох таблиць і має наступний вигляд:
SELECT *
FROM Таблиця1, Таблиця2
WHERE Поле зв’язку із таблиці1 *=* Поле зв’язку із таблиці2
Таке об’єднання симетричне відносно обох таблиць. Але існує ще два типи зовнішнього об’єднання: ліве зовнішнє об’єднання та праве зовнішнє об’єднання.
Ліве зовнішнє об’єднання має наступний вигляд:
SELECT *
FROM Таблиця1, Таблиця2
WHERE Поле зв’язку із таблиці1*= Поле зв’язку із таблиці2
Праве зовнішнє об’єднання має наступний вигляд:
SELECT *
FROM Таблиця1, Таблиця2
WHERE Поле зв’язку із таблиці1=* Поле зв’язку із таблиці2
Для підведення підсумків в базі даних, в мові SQL передбачені агрегатні (статистичні) функції. Агрегатна функція в якості аргумента містить який-небудь стовпець даних, а повертає одне значення, яке визначеним чином підсумовує цей стовпець. В SQL існує шість агрегатних функцій.
Функція SUM() обчислює суму всіх значень, що містяться в стовпці. При цьому стовпець повинен містити числового типу дані. Результат, що повертається цією функцією, має такий же тип даних.
Функція AVG() обчислює середнє всіх значень, що містяться у стовпці. При цьому стовпець повинен містити числового типу дані. Результат, що повертається цією функцією, має такий же тип даних.
Функція MIN() знаходить найменше значення у стовпці. При цьому стовпець повинен містити числові, стрічкові дані або значення дати/часу. Результат, що повертається цією функцією, має такий же тип даних.
Функція MAX() знаходить найбільше значення у стовпці. При цьому стовпець повинен містити числові, стрічкові дані або значення дати/часу. Результат, що повертається цією функцією, має такий же тип даних.
Функція COUNT() підраховує кількість значень у стовпці. При цьому тип даних може бути будь-яким. Функція завжди повертає ціле число, незалежно від типу даних стовпця.
Функція COUNT(*) підраховує кількість стрічок в таблиці результатів запиту, а не значення даних. При цьому тип даних може бути будь-яким. Функція завжди повертає ціле число незалежно від типу даних стовпця.
Інколи виникає потреба у використанні проміжних підсумків. Цю можливість надають ключові слова GROUP BY оператора SELECT. Наприклад:
SELECT Поле1, Агрегатна ф-ія(Поле2)
FROM Таблиця1
GROUP BY Поле1
Для знищення стрічок, які повторюються, використовується ключове слово DISTINCT. За допомогою цього ключового слова можна також вказати, що перед застосуванням агрегатної функції до стовпця із нього потрібно видалити всі значення, що повторюються. Наприклад:
SELECT DISTINCT Агрегатна ф-ія(Поле1)
FROM Таблиця1
Порядок виконання роботи
Відкрити базу даних Лабораторна1.
На основі таблиці Банк створити SQL-запит, в який включити всі поля таблиці Банк. Запит має наступний вигляд:
SELECT*
FROM Банк
Створити SQL-запит, де будуть відібрані дані про вкладників, термін вкладу яких більший, ніж 20 міс. Відсортувати по зростанню дані поля Вкладник. Запит має наступний вигляд:
SELECT Вкладник, [Термін вкладу]
FROM Банк
WHERE [Термін вкладу]> 20
ORDER BY Вкладник
Створити SQL-запит, який виводить загальну суму вкладів вкладника Іванова. Запит має наступний вигляд:
SELECT SUM([Сума вкладу])
FROM Банк
WHERE Вкладник=Іванов
Добавити новий запис в таблицю Банк. Запит має наступний вигляд:
Знищити дані про вкладника Петрова. Запит має наступний вигляд:
DELETE FROM Банк
WHERE Вкладник=Петров
Знищити дані про вкладників, сума вкладу яких менша 100 грн.
На основі таблиці Банк створити SQL-запит з обчислюваним полем Нараховані відсотки. У запит включити такі поля: Вкладник, Дата вкладу, Сума вкладу, Термін вкладу та Нараховані відсотки. Обчислити можливу виплату нарахованих відсотків, якщо відсоткова ставка виплат за вкладом становить 10% річних. Запит має наступний вигляд:
SELECT Банк.Вкладник, Банк.[Дата вкладу], Банк.[Сума вкладу], Банк.[Термін вкладу], ([Термін вкладу]*[Сума вкладу]/12*0.01) AS [Нараховані відсотки]
FROM Банк;
Створити SQL-запит, у який включити записи про вкладників, які внесли вклади з 1.12.00 по 31.1.03 р. Запит має наступний вигляд:
SELECT Банк.Вкладник, Банк.[Дата вкладу], Банк.[Сума вкладу]
FROM Банк
WHERE Банк.[Дата вкладу] BETWEEN ' 01.12.2000' AND '01.31.2003'
Створити SQL-запит, у який включити записи про вкладників, сума вкладу яких між 20 000 грн. та 40 000 грн. Запит має наступний вигляд:
SELECT Банк.Вкладник, Банк.[Дата вкладу], Банк.[Сума вкладу]
FROM Банк
WHERE Банк.[Сума вкладу] BETWEEN 20000 AND 40000
Вивести список вкладників, рахунок яких знаходиться у відділеннях Львова, Києва, Одеси. Запит має наступний вигляд:
SELECT Банк.Вкладник, Банк.[Відділення банку], Банк.[Сума вкладу]
FROM Банк
WHERE Банк.[Відділення банку] IN ('Львів','Київ','Одеса')
Вивести список вкладників, прізвища яких починаються на букву А. Запит має наступний вигляд:
SELECT Банк.Вкладник, Банк.[Відділення банку], Банк.[Сума вкладу]
FROM Банк
WHERE Банк.[ Вкладник] LIKE 'A%'
Вивести список вкладників, рахунки яких менше 20 000 грн. або більше 35 000 грн. Запит має наступний вигляд:
SELECT Банк.Вкладник, Банк.[Сума вкладу]
FROM Банк
WHERE (Банк.[Сума вкладу]<20000)
OR (Банк.[Сума вкладу]>35000)
Вивести список вкладників:
а)рахунок яких знаходиться у відділеннях Львова, Києва;
в) сума вкладу яких не нуль;
с) прізвища яких починаються на букву О.
Запит має наступний вигляд:
SELECT Банк.Вкладник, Банк.[Відділення банку], Банк.[Сума вкладу]
FROM Банк
WHERE (Банк.[Відділення банку] IN ('Львів','Київ'))
OR (Банк.[Сума вкладу] IS NOT NULL)
OR (Банк.[ Вкладник] LIKE 'О%')
Відкрити базу даних Лабораторна2.
Створити SQL-запит, використовуючи об’єднання таблиць по рівності. Вивести прізвища всіх вкладників та їх адресу. Запит має наступний вигляд:
SELECT [Дані про вкладників].Прізвище, Адреси.Адреса
FROM [Дані про вкладників], Адреси
WHERE [Дані про вкладників].[Код вкладника]=[Адреси].[Код вкладника]
Створити SQL-запит, використовуючи об’єднання таблиць по рівності. Вивести список вкладників, сума вкладу яких більша за 1000 грн. Запит має наступний вигляд:
SELECT [Дані про вкладників].Прізвище, [Вклади].[Сума вкладу]
FROM [Дані про вкладників], Вклади
WHERE [Дані про вкладників].[Код вкладника]=[Вклади].[Код вкладника]
AND [Вклади].[Сума вкладу]>1000
Створити SQL-запит, використовуючи об’єднання таблиць по рівності. Вивести список прізвищ та адрес вкладників, сума вкладу яких менша за 1000 грн. Запит має наступний вигляд:
SELECT [Дані про вкладників].Прізвище, Адреси.Адреса, [Вклади].[Сума вкладу]
FROM [Дані про вкладників], Адреси, Вклади
WHERE [Дані про вкладників].[Код вкладника]=[ Адреси].[Код вкладника]
AND [Дані про вкладників].[Код вкладника]=[Вклади].[Код вкладника]
AND [Вклади].[Сума вкладу]<1000
Створити SQL-запит, використовуючи об’єднання таблиць по рівності. Вивести всі поля таблиці Вклади та поля Прізвище, Ім’я, По-батькові таблиці Дані про вкладників. Запит має наступний вигляд:
SELECT Вклади.*, Прізвище, Ім’я, [По-батькові]
FROM Вклади, [Дані про вкладників]
WHERE [Дані про вкладників].[Код вкладника]=[Вклади].[Код вкладника]
Створити SQL-запит, використовуючи об’єднання таблиць. Вивести список вкладників, дату вкладу та назви відділень, в яких є їх вклади. Запит має наступний вигляд:
SELECT Прізвище, Ім’я, [По-батькові], Відділення
FROM [Дані про вкладників], [Відділення банку], Вклади
WHERE [Дані про вкладників].[Код вкладника]=[Вклади].[Код вкладника]
AND [Вклади].[Код відділення]=[Відділення банку].[Код відділення]
Створити SQL-запит, використовуючи агрегатні функції. Обчислити загальну суму вкладів вкладника Іванова. Запит має наступний вигляд:
SELECT SUM([Вклади].[Сума вкладу]) AS Сума
FROM [Дані про вкладників], Вклади
WHERE [Дані про вкладників].Прізвище)='Іванов'
AND [Дані про вкладників].[Код вкладника]=[Вклади].[Код вкладника]
Створити SQL-запит, використовуючи агрегатні функції. Вивести список клієнтів банку. Запит має наступний вигляд:
SELECT DISTINCT([Код вкладника])
FROM Вклади
Створити SQL-запит, використовуючи агрегатні функції та групування. Обчислити загальну суму вкладів кожного вкладника. Запит має наступний вигляд:
SELECT Прізвище, SUM([Вклади].[Сума вкладу]) AS [Сума вкладу]
FROM [Дані про вкладників], Вклади
WHERE [Дані про вкладників].[Код вкладника]=[Вклади].[Код вкладника]
GROUP BY Прізвище
Оформити роботу у звіт. Закрити базу даних.
