- •Модуль 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.2. Приклад тригера.
Давайте розглянемо простий приклад тригера, що спрацьовує ДО ВСТАВКИ в таблицю і заповнює поле первинного ключа.
CREATE TABLE Table_example (
ID INTEGER NOT NULL,
NAME VARCHAR(80),
PRICE_1 DOUBLE PRECISION,
CONSTRAINT pkTable PRIMARY KEY (ID));
Тут поле ID є первинним ключем і значення цього ключа повинні бути унікальними в межах таблиці. Щоб забезпечити виконання цієї вимоги, створимо генератор і тригер, що буде одержувати значення генератора і підставляти його в таблицю. Таким чином, у полі ID завжди будуть унікальні значення, тому що значення генератора буде збільшуватися щораз при звертанні до тригера. Отже, створюємо генератор:
CREATE GENERATOR GEN_TABLE_EXAMPLE_ID;
І встановлюємо його початкове значення в одиницю:
SET GENERATOR GEN_TABLE_EXAMPLE_ID TO 1;
Тепер необхідно створити тригер. Треба сказать, що тригер, як і збережувана процедура, може містити у своєму тілі кілька операторів, розділених крапкою з комою. Тому вам необхідно скористатися командою зміни роздільника команд SET TERM, як це було описано в розділі "Збережувані процедури". Ми ж будем наводити тексти тригерів без обрамлення командами зміни роздільника.
Отже, розглянемо текст нашого тригера:
CREATE TRIGGER Table_example_bi FOR Table_example
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID(GEN_TABLE_EXAMPLE_ID,1);
END
Як бачите, тригер дуже нагадує збережувану процедуру (фактично, як уже було сказано, це і є особливий різновид ЗП), але є і декілька відмінностей. Давайте докладно розберемо "будову" тригера.
Опис команди створення тригера починається з ключових слів CREATE TRIGGER, після яких з’являється ім'я тригера – Table_example_bi. Потім слідує ключове слово FOR, після якого зазначене ім'я таблиці, для якої створюється тригер, – Table_example.
На другому рядку команди приводиться опис сутності тригера – ключове слово ACTIVE указує, що тригер є "активним". Тригер також може бути переведений у стан INACTIVE. Це означає, що він буде зберігатися в базі даних, але він не буде спрацьовувати. Сполучення ключових слів BEFORE INSERT визначає, що тригер спрацьовує ДО ВСТАВКИ; а ключове слово POSITION і число 0 указують черговість (позицію) створюваного тригера серед тригерів того ж типу для даної таблиці. Позиція тригера потрібна тому, що в InterBase можливо створити більш 32000 тригерів кожного виду (наприклад, BEFORE INSERT чи AFTER UPDATE), і серверу потрібно вказати, у якому порядку ці тригери будуть виконуватися. Тригери з меншою позицією виконуються першими. Якщо є декілька тригерів з однакової позицією, то вони будуть виконуватися за абеткою.
Усе розглянуте вище до ключового слова AS утворює заголовок тригера. Після AS слідує тіло тригера. Власне в тілі і здійснюється вставка значення в поле первинного ключа. Але спочатку за допомогою вже знайомого вам оператора IF.. .THEN перевіряється, чи не було заповнено це поле на клієнті. Вираз перевірки, що повертає булеву TRUE (істина) чи FALSE (неправда), виглядає так:
NEW.ID IS NULL
Тут NEW – контекстна змінна.