- •Модуль 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
- •Література
3.5. Секція having без секції group by
На практиці секція HAVING завжди використовується разом із секцією GROUP BY, але синтаксис оператора SELECT цього не вимагає. Якщо секція HAVING використовується без секції GROUP BY, то СУБД вважає всі результати запиту однією групою, тобто агрегатні функції вказані в секції HAVING будуть застосовуватися до однієї єдиної групи, яка складається з усіх рядків.
Контрольні питання:
-
Що виконує оператор EXISTS?
-
Коли доцільно використовувати оператор EXISTS?
-
Що таке агрегатні функції?
-
Опишіть основні агрегатні функції.
-
Чим відрізняється результат виконання функцій COUNT (вираз) та COUNT (*)?
-
Вкажіть правила опрацювання значення NULL агрегатними функціями.
-
Коли використовується ключове слово DISTINCT?
-
Що таке групування? Яка команда здійснює групування?
-
В якому реченні задається умова відбору груп?
Тема 12. З’єднання з базою даних. Використання збережуваних процедур в Delphi
-
З’єднання з базою даних:
-
Використання збережуваних процедур в Delphi.
1. З’єднання з сервером
Все звертання з програми до таблиць однієї бази даних на сервері здійснюється через одне з’єднання, на якому замикаються всі компоненти доступу до даних, що мають відповідні значення властивості DatabaseName.
Все керування одиночним з’єднанням з якою-небудь базою даних здійснюється компонентом TDatabase. В загальному випадку використання цього компонента в програмах баз даних необов’язково. Однак при роботі с серверами SQL він необхідний, так як:
-
дозволяє керувати з’єднанням з базою даних;
-
дозволяє керувати транзакціями простіше, ніж за допомогою операторів SQL;
-
забезпечує реєстрацію користувача на сервері.
При звичайному використанні локальних баз даних можна прекрасно обійтися і без цього компонента.
В процесі роботи компонент активно використовує параметри псевдонімів і драйверів BDE. Звичайно компонент TDatabase розміщується в модулі даних програми.
Для визначення бази даних (сервера), з якою програма встановлює з’єднання за допомогою компонента TDatabase, частіш використовується властивість AliasName. Властивості DatabaseName і DriverName являють альтернативний спосіб з’єднання. Якщо з’єднання задане властивістю AliasName, то властивість DatabaseName можна використовувати для створення тимчасового псевдоніма, який буде доступний лише для компонентів доступу до даних всередині програми. При клацанні на кнопці списка доступних псевдонімів властивості DatabaseName в Інспекторі об’єктів для довільного компонента доступу до даних, в списку буде доступний і тимчасовий псевдонім компонента TDatabase.
Наприклад, при переключення програми на іншу базу даних можна змінити лише значення псевдоніма в компоненті TDatabase. Якщо всі компоненти наборів даних підключені до тимчасового псевдоніму компонента TDatabase, то вони автоматично переключаться на нову БД.
Додаткові можливості керування наборами даних при переключення з’єднання надають властивості Connected і KeepConnection. Вони дозволяють одночасно з з’єднанням закрити всі активні набори даних.
Якщо набори даних програми підключені до бази даних через компонент TDatabase, то перед їх відкриттям необхідно встановити з’єднання з БД. З’єднання з БД встановлюється за допомогою методу Оpen. Якщо спробувати активізувати набір даних без цього, то з’єднання буде встановлено автоматично.
Аналогічна картина виникає при закритті наборів даних і відключенні від БД. Додатковий засіб керуванняу в цьому випадку є властивість KeepConnection. Якщо вона дорівнює True, то при закритті останнього відкритого набору даних з’єднання залишається відкритим. В іншому випадку з’єднання автоматично закривається.
Це дозволяє керувати з’єднанням в різних вихідних ситуаціях. При великій завантажуваності сервера буває необхідним переривати з’єднання кожний раз. Якщо потрібно розвантажити мережевий трафік, то з’єднання краще залишити включеним.
При підключенні до бази даних досить часто потрібно задати значення для параметрів драйвера BDE. Для цього використовується властивість Params, що являє собою звичайний список. В ньому необхідно задавати назви змінюваних параметрів і їх нові значення:
USERNAMЕ=SYSDBA PASSWORD=masterkey
Значення параметров можно задавати як статично, так і динамічно під час виконання.
Компонент TDatabase може полегшити підключення до баз даних з реєстрацією користувачів. При реєстрації на сервері досить задати ім’я користувача і пароль у властивості Рarams і встановити для властивості LoginPrompt значення False. Ця комбінація працює як під час виконання, так і під час розробки.
