- •Робота в субд Access з використанням sql
- •7.080203 Системний аналіз і управління
- •1 Лабораторна робота № 1
- •1.1 Теоретичні відомості
- •1.2 Створення таблиць бази даних
- •1.3 Контрольні питання
- •1.4 Індивідуальні завдання
- •2 Лабораторна робота №2
- •2.1 Створення запитів на вибірку
- •2.1.1 Використання умов у запитах
- •2.1.2 Створення обчислювальних полів
- •2.1.3 Запити з параметром
- •2.1.4 Пошук записів, що не мають зв'язаних в іншій таблиці
- •2.2 Контрольні питання
- •2.3 Індивідуальні завдання
- •3 Лабораторна робота №3
- •3.1 Використання підсумків у запитах
- •3.2 Перехресні запити
- •Выражение1: "Квартал " & Format( [dat] ;"q")
- •3.3 Контрольні питання
- •3.4 Індивідуальні завдання
- •4 Лабораторна робота №4
- •4.1 Запити на оновлення
- •4.2 Створення нової таблиці
- •4.3 Вставка даних з іншої таблиці
- •4.4 Вилучення даних з таблиці
- •4.5 Контрольні питання
- •4.6 Індивідуальні завдання
- •5 Лабораторна робота № 5
- •5.1 ІнструкціяSelect мовиSql
- •5.1.1 Розділ select
- •5.1.2 Розділ from
- •5.1.3 Розділ where
- •5.1.4 Розділ group by
- •5.1.5 Розділ having
- •5.1.6 Розділ order by
- •5.1.7 Оператор union
- •5.1.8 Розділ into
- •5.2 Інструкція insert
- •5.3 Інструкція update
- •5.4ІнструкціяDelete
- •5.5 Інструкція transform
- •5.6 Предикати
- •5.7 Контрольні питання
- •5.8 Індивідуальні завдання
- •Література
5.4ІнструкціяDelete
Інструкція вилучає рядки з вказаної таблиці. Синтаксис:
DELETE [список полів]
FROM ім’я таблиці AS псевдонім
WHERE умови вибору
В список полів треба включати поля, які входять до умов вибору. Якщо в конструкції FROM вказане ім’я однієї таблиці і відсутній розділ WHERE, список полів можна не вказувати. Якщо в конструкції FROM вказуються імена декількох таблиць, то треба вказати , з якої саме таблиці вилучати дані. Якщо між таблицями встановлено зв’язок типу "один–до–одного", то можна вилучати дані з однієї з них. Якщо між таблицями встановлено зв’язок типу "один–до–багатьох", то можна вилучати дані тільки з боку "багатьох".
Задача 5.15. Вилучити з таблиці tzarobitok відомості про заробітки робітників за вказаний рік. Рік вводити як параметр.
PARAMETERS [Введіть рік] Short;
DELETE tzarobitok .*, Year([tzarobitok]![dat])
FROM tzarobitok
WHERE (((Year([tzarobitok]![dat]))=[Введіть рік]));
5.5 Інструкція transform
Ця інструкція створює перехресний запит. Синтаксис:
TRANSFORM вираз із підсумковою функцією
Інструкція SELECT
PIVOT вираз
[ IN список заголовків стовпчиків]
Вираз із підсумковою функцією вказує, які саме підсумки та для яких полів будуть знайдені і записані до клітинок таблиці.
Інструкція SELECT записується за звичайними правилами, але обов’язково повинна мати розділ GROUP BY. Значення полів, вибраних для угруповання, визначають заголовки підсумкових рядків. Їх може бути декілька.
PIVOT вираз – задає стовпець або вираз, значення якого використовуються для заголовків стовпчиків.
Список заголовків стовпчиків після слова IN пишеться через кому і може містити перелік значень в лапках, який визначає їхній вигляд та порядок. Конструкція IN – необов’язкова.
Задача 5.16. Створити перехресний запит, до якого увійдуть загальні суми заробітку по кварталах для кожного підрозділу.
TRANSFORM Sum(tzarobitok.zar) AS [сума]
SELECT tvidom.pidrozdil, Sum(tzarobitok.zar) AS [Загальна сума]
FROM tvidom INNER JOIN tzarobitok
ON tvidom.tn = tzarobitok.tn
GROUP BY tvidom.pidrozdil
PIVOT "Квартал " & Format([dat],"q");
Інструкція відповідає запиту 3.4, результати роботи – рис. 3.8.
5.6 Предикати
Предикат EXISTS
Він перевіряє, що в підпорядкованому запиті існує бодай один рядок, який задовольняє умовам вибірки. В цьому випадку предикат приймає значення True (істина), а інакше – False (хибність). Немає значення, які саме значення повертає підпорядкований запит. Тому в підзапиті можна використовувати символ * замість конкретних полів. Використання підпорядкованих запитів – це не найкращий спосіб. Краще створювати запит на запиті.
Приклад 5.17. Вивести прізвища людей, яким була нарахована заробітна плата.
SELECT tvidom.fio FROM tvidom
WHERE
(((EXISTS (SELECT * FROM tzarobitok
WHERE tvidom.tn = tzarobitok.tn)) = True));
Предикати SOME, ANY, ALL
Синтаксис:
Вираз знак порівняння [SOME | ANY | ALL]
(підпорядкований-запит)
Тип даних виразу повинен бути сумісним з типом даних стовпця, який повертає підпорядкований запит. Регістр при порівнянні не враховується.
ALL – результат приймає значення істина, якщо істинні всі порівняння виразу зі значеннями стовпця підзапиту;
SOME або ANY – результат приймає значення істина, якщо значення виразу співпадають бодай з одним зі значень, що повертає підзапит.