- •Контрольні запитання
- •Контрольні запитання
- •Які головні переваги реляційної моделі?
- •Які види ключів існують і навіщо вони потрібні?
- •Функціональна залежність
- •Найбільш простий вигляд оператора 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. Заборона доступу
4. Використання псевдонімів таблиць
Уточнені імена полів (які, як правило, використовуються в багатотабличних запитах на вибірку) бувають дуже громіздкими.
Це можна усунути, використовуючи псевдоніми таблиць: в уточненому імені поля спочатку вказується ім’я або псевдонім таблиці, а потім (після крапки) – ім’я поля:
синтаксична діаграма уточненого імені поля.
Псевдоніми таблиць визначаються в секції FROM згідно наступної синтаксичної діаграми.
Ключові слова, імена та псевдоніми відокремлюються пробілами. Той самий оператор SELECT (приклад №6) можна записати з використанням псевдонімів таблиць:
7). SELECT V. , T. Cina
FROM Vidpusk V, Tovary T
WHERE V. Tovar. = T. Nazva
(результат буде той самий, що і результат прикладу №6).
Лекція №13. Групування записів. Секція GROUP BY.
Секція order by – визначення порядку сортування
Результуючий набір даних можна відсортувати за допомогою секції
ASC (по замовчуванню) – сортування в порядку зростання значень поля.
DESC – сортування в порядку спадання значень поля.
- це остання секція в операторі SELECT (записується після секції WHERE).
Правила виконання запитів на вибірку доповнюються дією:
-
Якщо є секція ORDER BY, то результуюча таблиця сортується по значенням стовпчиків, вказаних в списку полів секції ORDER BY: спочатку - по значенням стовпчика, вказаного першим в списку полів; потім – другий у списку полів стовпчик – він використовується для сортування в межах групи, яка визначається тими самими значеннями першого стовпчика і т.д.
Приклад: (відсортувати результат 7, по прізвищах покупців).
8). SELECT V. , T. Cina
FROM Vidpusk V, Tovary T
WHERE V. Tovar = T. Nazva
ORDER BY V.Pokupets
8) |
|||||
V. № |
V.Data |
V. Kilkist |
V. Tovar |
V. Pokupets |
T. Cina |
2 |
3.09. |
3 |
дріжджі |
Герило |
3.60 |
1 |
2.09. |
150 |
цукор |
Журавель |
2.60 |
Результуюча таблиця відсортована по значенню цього поля.
Групування записів
Інколи потрібно отримати агрегатні значення (мінімум, максимум, середнє арифметичне тощо) не по всьому результуючому НД, а лише по кожній із груп записів, що входять в цей результуючий НД. Кожна група записів характеризується однаковим значенням якогось стовпчика.
Наприклад, задача:
вивести загальну кількість відпущеного товару по кожному товару.
- потрібно обчислювати суму кількостей відпуску товарів і групувати по назві товару.
Для цього в оператор SELECT після секції WHERE добавляється секція GROUP BY (якщо є секція ORDER BY, то секція GROUP BY записується після секції WHERE, але перед секція ORDER BY)
Якщо є секція GROUP BY, то обов’язково потрібно, щоб один із стовпчиків результуючої таблиці представлявся агрегатною функцією!
- тобто, щоб в секцію SELECT входив вираз, що містить агрегатну функцію.
Групування відбувається по не - агрегатним полям, отже для групування (тобто, для обчислення агрегатної функції не по всім рядкам таблиці, а лише по групам) – потрібно, щоб у секцію SELECT входило, по крайній мірі, одне не - агрегатне поле (групування здійснюється по одиноким значенням у цьому не - агрегатному стовпчику).
Всі не - агрегатні поля секції SELECT повинні бути вказані в секції GROUP BY!
синтаксична діаграма оператора SELECT:
ASC – в порядку зростання (по замовчуванню)
DESC – в порядку спадання.
Це лише та частина, яку ми вже вивчили. Повна синтаксична діаграма – приблизно вдвічі громіздкіша.
Приклади:
# Вивести загальну кількість відпусків по кожному із товарів:
19). SELECT V. Tovar, SUM (V. Kilkist) AS Vidp
FROM Vidpusk V
GROUP BY V. Tovar
-
19)
Tovar
Vidp
……
…….
……
…….
# Вивести загальну вартість для кожного із відпущених товарів:
20). SELECT V. Tovar,
SUM (V. Kilkist) AS Vart
FROM Vidpusk V, Tovary T
WHERE V. Tovar = T.Nazva
GROUP BY V. Tovar
-
20)
Tovar
Vart
……
…….
……
…….