- •Модуль 1 Тема 1. Вступ до sql. Синтаксис sql. Типи даних.
- •1. Вступ до sql.
- •Функції sql:
- •Роль sql
- •Переваги sql:
- •Синтаксис sql.
- •Типи даних.
- •1.3.1. Команди
- •1.3.2. Імена
- •1.3.3. Типи даних
- •1.3.4. Константи
- •1.3.4.1. Числові константи
- •1 .3.4.2. Літерні рядки
- •1.3.4.3. Константи дати і часу
- •1.3.4.4. Іменовані константи
- •1.3.5. Вирази
- •1.3.6. Вбудовані функції
- •Тема 2. Створення баз даних
- •Мова визначення даних
- •2. Створення бази даних
- •Тема 3. Створення таблиць
- •1. Команда створення таблиці.
- •2. Заборона значення null за допомогою обмеження not null
- •Тема 4. Вставка стрічок з допомогою оператора insert. Вилучення стрічок з допомогою оператора delete, редагування стрічки з допомогою команди update.
- •Вставка рядків за допомогою команди insert.
- •Додавання рядка за допомогою положення стовпця
- •Додавання рядка за допомогою назв стовпців
- •Додавання рядків з однієї таблиці в іншу
- •Зміна рядків за допомогою команди update.
- •Зміна рядків
- •Видалення рядків за допомогою команди delete
- •Видалення рядків
- •Тема 5. Оператор select
- •Оператор select.
- •Обчислювальні стовпчики. Альтернативне ім’я стовпчику.
- •Порівняння значення стовпчика із константою
- •Правила виконання однотабличних запитів на вибірку
- •Тема 6. Комбінування умов з допомогою операторів and, or, not. Порівняння по шаблону. Порівняння з діапазоном. Сортування стрічок з допомогою речення order by.
- •Порівняння значень виразів має наступну синтаксичну діаграму:
- •Тема 7. Створення псевдонімів. З’єднання таблиці із собою. Вибір даних з кількох таблиць
- •1. Створення псевдонімів.
- •2. З’єднання таблиці із собою.
- •3. Просте з’єднання таблиць (з’єднання за рівністю)
- •Запити з використанням відношення „головна – підлегла” таблиці (предок – нащадок)
- •3. Запити на вибірку до трьох і більше таблиць
- •4. Запити на об’єднання
- •Тема 8. Введення обмежень в базах даних
- •1. Види обмежень в базі даних.
- •Основні принципи роботи з обмеженнями
- •Присвоєння назви обмеженню
- •2. Первинний і унікальний ключі.
- •3. Зовнішні ключі.
- •4. Обмеження check
- •5. Вилучення обмежень.
- •Тема 9. Використання збережуваних процедур в базах даних. Використання генераторів ключів у базах даних в InterBase. Використання тригерів у базах даних.
- •1. Визначення збережуваної процедури.
- •1.2. Цикли й оператори розгалуження.
- •2. Створення генераторів.
- •2.1. Індекси.
- •2.2. Обробка виключень і помилок.
- •3. 1.Означення тригера.
- •3.2. Приклад тригера.
- •3.3. Контекстні змінні.
- •Тема 10. Безпека в базах даних
- •1. Користувач InterBase.
- •3. Організація користувачі у групи за допомогою ролей.
- •4. Права. Роздача прав.
- •5. Анулювання прав.
- •Модуль 2 Тема 11. Оператор exists. Сумування і групування даних.
- •1.1. Оператор exists.
- •1.2. Використання exists з співвіднесеними підзапитами.
- •1.3. Комбінація оператора exists і з’єднання.
- •1.4. Використання not exists.
- •1.5. Використання складних підзаписів з оператором exists.
- •2.1. Агрегатні (статистичні) функції
- •2.2. Правила опрацювання значення null агрегатними функціями:
- •2.3.Опрацювання унікальних записів агрегатними функціями
- •2.4. Агрегатні функції і значення null
- •3.1. Групування записів
- •3.2. Секція having – умова відбору груп
- •3.3. Обмеження на умову відбору груп
- •3.4. Значення null і умова відбору груп
- •3.5. Секція having без секції group by
- •Тема 12. З’єднання з базою даних. Використання збережуваних процедур в Delphi
- •1. З’єднання з сервером
- •2. Використання збережуваних процедур в Delphi.
- •Компонент tStoredProc.
- •Тема 13. Використання механізму транзакцій компонента Database. Керування транзакціями
- •Тема 14. Сервер баз даних InterBase і компоненти InterBase Express.
- •1. Сервер баз даних InterBase і компоненти InterBase Express
- •2. Механізм доступу до даних InterBase Express
- •3. Компонент tibDatabase.
- •Тема 15. Виконання запитів за допомогою компонента tibDataSet
- •1. Вибірка даних з таблиці.
- •2. Редагування даних за допомогою візуальних компонентів.
- •3. Програмне редагування даних.
- •Тема 16. Підпорядковані запити в таблицях Механізм master-detail
- •Література
2.1. Агрегатні (статистичні) функції
Агрегатні функції призначені для обчислення підсумкових значень на основі всіх записів набору даних або на основі певної групи рядків.
COUNT (вираз) |
- ця функція обчислює кількість входжень відповідного виразу у всі рядки чи у групу рядків результуючого набору даних |
SUM (вираз) |
- ця функція обчислює суму значень виразу по всіх рядках чи по групі рядків результуючої таблиці |
AVG (вираз) |
- ця функція обчислює середнє арифметичне виразу |
MAX (вираз) |
- ця функція обчислює максимальне значення виразу |
MIN (вираз) |
- ця функція обчислює мінімальне значення виразу |
Приклад 1. Обчислити кількість відпуску товару
SELECT COUNT (*)
FROM Vidpusk
Column 1 |
2 |
Приклад 2. Вивести загальну вартість відпущеного товару
SELECT SUM (V.Kilkist * T.Cina)
FROM Vidpusk V, Tovary T
WHERE V.Tovar = T.Nazva
Column 1 |
400.80 |
Приклад 3. Вивести середнє арифметичне вартості всіх відпущених товарів
SELECT AVG (V.Kilkist * T.Cina)
FROM Vidpusk V, Tovary T
WHERE V.Tovar = T.Nazva
Column 1 |
200.40 |
В усіх цих прикладах результуюча таблиця містить лише один стовпчик і лише один рядок.
Якщо із групи однакових рядків потрібно враховувати лише один, то перед виразом у дужках записують слово DISTINCT.
Приклад 4. Вивести кількість різних видів окремих одиниць вимірювань, які є на складі.
SELECT COUNT (DISTINCT Odynycia)
FROM Tovary
Column 1 |
3 |
В стандарті SQL говориться, що значення NULL агрегатними функціями ігнорується. Значення NULL відповідає невідомому або відсутньому значенню.
Нехай маємо таблицю Pracivnyky
Pracivnyky |
|||
No |
Prizv |
Plan |
Prodano |
101 102 103 104 105 106 |
Дід Баба Внучка Жучка Кішка Мишка |
350 300 NULL 300 275 350 |
367 392 75 186 286 361 |
Приклад 5.
SELECT COUNT (*), COUNT (Plan), COUNT (Prodano)
FROM Pracivnyky
COUNT (*) |
COUNT (Plan) |
COUNT (Prodano) |
6 |
5 |
6 |
COUNT (*) |
- ця функція обчислює загальну кількість рядків у таблиці |
COUNT (стовпчик) |
- ця функція обчислює кількість рядків, які у відповідному стовпчику не мають значення NULL |
Ігнорування значень NULL не впливає на результати функцій MIN та MAX, але воно може привести до проблем при використанні функцій SUM та AVG.
Приклад 6.
SELECT SUM (Prodano),
SUM (Plan),
SUM (Prodano) – SUM (Plan),
SUM (Prodano – Plan)
FROM Pracivnyky
SUM (Prodano) |
SUM (Plan) |
SUM (Prodano) – SUM (Plan) |
SUM (Prodano – Plan) |
1667 |
1575 |
92 |
17 |
Можна було сподіватися, що вираз SUM (Prodano) – SUM (Plan) буде дорівнювати виразу SUM (Prodano – Plan), але це не так. Причиною різних результатів є рядок із значенням NULL у стовпчику Plan. Вираз SUM (Prodano) обчислює суму продаж для всіх шести працівників, а вираз SUM (Plan) обчислює суму лише п’яти значень і не враховує значення NULL. Вираз SUM (Prodano) – SUM (Plan) обчислює різницю між цими двома сумами. З іншої сторони вираз SUM (Prodano – Plan) в якості аргументів приймає лише п’ять значень, які не дорівнюють NULL, тому що в рядку, де значення запланованого об’єму продаж дорівнює NULL, будь-який вираз, який містить поле Plan отримує значення NULL. Отже, це значення функція SUM проігнорує, тобто результати цього виразу не враховують фактичні продажі працівника, для якого ще не встановлено плану, хоча вони ввійшли в результат попереднього виразу. Постає питання: яка ж відповідь є „вірною”? Обидві. Перший вираз обчислює те, що і означає, тобто SUM (Prodano) – SUM (Plan) обчислює різницю між сумарним об’ємом фактичних продаж і сумарним об’ємом планових продаж. Другий вираз означає суму різниць між фактичними та плановими продажами кожного працівника.