- •Модуль 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.2. Правила опрацювання значення null агрегатними функціями:
-
Якщо будь-які значення, які містяться у стовпчику дорівнюють NULL, то при обчисленні агрегатних функцій вони ігноруються.
-
Якщо всі значення у стовпчику дорівнюють NULL, то функції SUM, AVG, MIN, MAX повернуть значення NULL, а функція COUNT поверне значення нуль.
-
Якщо стовпчик не містить значень (порожній стовпчик чи порожня таблиця), то функції SUM, AVG, MIN, MAX повернуть значення NULL, а функція COUNT поверне значення нуль.
-
Функція COUNT (*) підраховує кількість рядків і не залежить від наявності чи відсутності у будь-якому стовпчику значення NULL. Якщо рядків у таблиці немає, то функція COUNT поверне значення нуль.
Промислові СУБД можуть по-іншому опрацьовувати значення NULL агрегатними функціями, тобто інакше порівняно із стандартом SQL.
Приклад 7.
SELECT COUNT ()
FROM Vidpusk V, Tovary T
WHERE V. Tovar = T. Nazva
SELECT SUM (V. Kilkist * T. Cina)
FROM Vidpusk V, Tovary T
WHERE V. Tovar = T. Nazva
SELECT AVG (V. Kilkist * T. Cina)
FROM Vidpusk V, Tovary T
WHERE V. Tovar = T. Nazva
SELECT MAX (V. Kilkist * T. Cina)
FROM Vidpusk V, Tovary T
WHERE V. Tovar = T. Nazva
SELECT MIN (V. Kilkist * T. Cina)
FROM Vidpusk V, Tovary T
WHERE V. Tovar = T. Nazva
- в усіх випадках результуюча таблиця містить один стовпчик і один рядок. Агрегатні функції також називають – статистичними.
2.3.Опрацювання унікальних записів агрегатними функціями
Для агрегатних функцій: якщо із групи однакових записів потрібно враховувати лише одну, то перед виразом в дужках записують ключове слово DISTINCT :
Приклад 8:
-
Tovary
Nazva
Odynyci
Cina
цукор
кг.
2.60
молоко
л.
1.00
хліб
бух.
1.30
дріжджі
кг.
3.60
ковбаса
кг.
17.50
Приклад 9: Вибрати і вивести кількість різних видів одиниць вимірювання наявних на складі товарів.
SELECT COUNT (DISTINCT Odynyci)
FROM Tovary
-
16)
COLUMN 1
3
2.4. Агрегатні функції і значення null
NULL – відповідає невідомому або не визначеному значенню. В стандарті SQL сказано : “Значення NULL агрегатними функціями ігноруються.”
Нехай:
-
Персонал (Personal)
Tab. №
Prizv
Plan
Prodano
101
Дід
350
367
102
Баба
300
392
103
Внучка
75
104
Жучка
300
186
105
Кішка
275
286
106
Мишка
350
361
Приклад 10:
SELECT COUNT (*),COUNT (Plan),COUNT (Prodano)
FROM Personal
-
COUNT (*)
COUNT (Plan)
COUNT (Prodano)
6
5
6
COUNT (*) – обчислює загальну кількість рядків у таблиці.
COUNT( ) – обчислює кількість значень у відповідному стовпчику, які не дорівнюють NULL.
Ігнорування значень NULL – не впливає на результати функцій MIN( ) та MAX( ). Але це ігнорування може привести до проблем при використанні функцій SUM( ) і AVG(), наприклад:
Приклад 11:
SELECT SUМ (Prodano), SUМ (Plan),(SUМ (Prodano) – SUM(Plan)),
SUМ (Prodano - Plan)
FROM Personal
-
SUМ (Prodano)
SUМ (Plan)
(SUМ (Prodano) – SUM(Plan))
SUM (Prodano Plan)
1667
1575
92
17
Можна було сподіватися, що вирази (SUМ (Prodano) – SUM(Plan)) та SUМ (Prodano - Plan) дадуть ті самі результати, але це не так. Причиною різних результатів є рядок із значенням NULL в стовпчику Plan.
Вираз SUM (Prodano) – обчислює суму продаж для всіх шести працівників, а вираз SUМ (Plan) – обчислює суму тільки п’ять значень і не враховує значення NULL.
Наступний вираз обчислює різницю між цими двома сумами: SUМ (Prodano) – SUM (Plan)
З іншої сторони, вираз SUМ (Prodano - Plan) приймає в якості аргументів лише п’ять значень, які не дорівнюють NULL. В рядку, де значення запланованого об’єму продаж дорівнює NULL (для Внучки), будь-який вираз, що містить поле Plan, отримає значення NULL (а отже, Prodano – Plan NULL), і це значення функції SUМ( ) проігнорує. Отже, результати цього вирази не враховують фактичні продажі працівника, для якого ще не встановлено плану, хоча вони ввійшли в результат попереднього виразу. Яка ж відповідь є “вірною”? Обидві! Перший вираз обчислює саме те, що і означає, тобто “сума по Prodano мінус сума по Plan” і другий вираз також обчислює саме те, що означає, тобто “сума по різницях між Prodano і Plan”, але при наявності значень NULL результати виразів – відрізняються.
Ось точні правила опрацювання значень, NULL статистичними функціями:
-
якщо якісь значення, що містяться в стовпчику, дорівнюють NULL, то при обчисленні результату функції вони ігнорують ( не враховуються);
-
якщо всі значення в стовпчику дорівнює NULL, то функції SUМ ( ), AVG ( ), MIN ( ), MAX ( ) повертають значення NULL; функція COUNT ( ) повертає ;
-
якщо стовпчик не містить значень (порожній стовпчик порожня таблиця), то
COUNT ( )
-
функція COUNT (*) підраховує кількість рядків і не залежить від наявності чи відсутності в якомусь стовпчику значень NULL; якщо рядків в таблиці – немає, то
COUNT (*) .
Комерційні (промислові) СУБД можуть по-іншому опрацьовувати NULL – значення статистичними функціями, ніж це описано в стандарті SQL - треба дивитися опис конкретної СУБД.