- •Контрольні запитання
- •Контрольні запитання
- •Які головні переваги реляційної моделі?
- •Які види ключів існують і навіщо вони потрібні?
- •Функціональна залежність
- •Найбільш простий вигляд оператора select
- •2. Використання секції where
- •2.1. Порівняння значення стовпчика із константою
- •2.2. Правила виконання однотабличних запитів на вибірку
- •3. Багатотабличні запити
- •3.1. Правила виконання багатотабличних запитів на вибірку
- •4. Використання псевдонімів таблиць
- •Секція order by – визначення порядку сортування
- •Групування записів
- •Правила виконання sql–запиту на вибірку (з врахуванням секції group by)
- •Кілька стовпчиків групування
- •8.3. Обмеження на запити з групуванням
- •8.4. Значення null в стовпчиках групування
- •Правила виконання sql–запиту на вибірку (з врахуванням секції having)
- •9.2. Обмеження на умову відбору груп
- •Значення null і умови відбору груп
- •Секція having без секції group by
- •Складні умови відбору у запитах на вибірку даних Використання логічних виразів
- •Порівняння
- •Перевірка на належність діапазону значень (between…and…)
- •Перевірка на належність множині значень (in)
- •Перевірка на рівність значенню null (is null)
- •Символ пропуску
- •2.1. Режими аутентифікації
- •2.2. Компоненти структури безпеки
- •2.3. Ролі сервера
- •2.4. Ролі баз даних
- •2.5. Ролі програми
- •2.6. Захист даних
- •Шифрування даних
- •Обмеження доступу до файлів sql server
- •3.1. Права доступу
- •3.2. Права на доступ до об'єктів баз даних
- •3.3. Заборона доступу
Правила виконання sql–запиту на вибірку (з врахуванням секції group by)
1. Сформувати декартовий добуток таблиць, вказаних в секції FROM.
Якщо в секції FROM вказана лише одна таблиця, то декартовим добутком буде вона сама.
2. Якщо є секція WHERE - застосувати умову секції WHERE до кожного рядка таблиці, утвореної в результаті декартового добутку і залишити тільки ті рядки, для яких ця умова виконується, тобто має значення TRUE; рядки, для яких умова має значення FALSE або NULL – відкидаються.
3. Якщо секція GROUP BY, - розділити рядки, що залишилися в результ. таблиці, на групи таким чином, щоб рядки в кожній групі мали одинакові значення по всіх стовпчиках групування. Стовпчик групування – це той стовпчик, який визначає групу рядків. В межах групи всі рядки мають в стовпчику групування одне і те саме значення.
-
Таблиця
......
стовпчик
групування
......
значення 1
значення 1
..................
значення 1
значення N
..................
значення N
4. Для кожного рядка, що залишився (або для кожної групи рядків) – обчислити значення кожного елемента із списку полів секції SELECT і утворити один рядок таблиці результату запиту. При будь-якому звертанні до стовпчика береться значення стовпчика для біжучого рядка (або групи рядків).
В якості аргументу статистичної функції використовуються значення стовпчика із всіх рядків, які входять у групу, - якщо вказана секція GROUP BY; якщо ж секції GROUP BY – немає, то використовуються значення стовпчика із усіх рядків таблиці результатів запиту.
5. Якщо є ключове слово DISTINCT – вилучити із таблиці результатів запиту всі рядки – дублікати.
6. Якщо є секція ORDER BY – відсортувати результати запиту.
Кілька стовпчиків групування
SQL дозволяє групувати результати запиту на основі двох чи більшої кількості стовпчиків.
Наприклад, потрібно згрупувати замовлення по працівникам та клієнтам.
Нехай
-
Zamovlennia
Pracivnyk
Klient
Kilkist
.....
...........
.............
.............
...........
Тоді, запит:
21). Обчислити загальну кількість замовлень по кожному клієнту для кожного працівника:
21). SELECT Pracivnyk,
Klient,
SUM (Kilkist)
FROM Zamovlennia
GROUP BY Pracivnyk,
Klient
Навіть при групуванні по двом стовпчикам SQL забезпечує лише один рівень групування.
Запит 21) генерує лише один підсумковий рядок для кожної пари працівник – клієнт.
За допомогою SQL неможливо створити групи і підгрупи з двома ( чи більшою кількістю) рівнями підсумкових результатів.
Найкраще, що можна зробити – це відсортувати дані таким чином, щоб рядки в таблиці результатів запиту розміщувалися в потрібному порядку.
В багатьох СУБД при використанні GROUP BY сортування виконується автоматично, але автоматичний порядок сортування можна поміняти за допомогою секції ORDER BY:
22). Підрахувати загальну кількість замовлень по кожному клієнту для кожного працівника, відсортувати результати запиту по клієнтам і працівникам:
22). SELECT Klient,
Pracivnyk,
SUM (Kilkist)
FROM Zamovlennia
GROUP BY Klient,
Pracivnyk
ORDER BY Klient,
Pracivnyk
За допомогою одного SQL – запиту неможливо отримати як детальні, так і проміжні підсумкові результати.
Для того, щоб отримати детальні результати з підсумками по групам – необхідно написати програму, яка обчислює ці проміжні підсумкові результати (це може робити Quick Report)