- •Модуль 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. Організація користувачі у групи за допомогою ролей.
Щоб зменшити кількість видаваних дозволів і об’єднати користувачів у групу за принципом наявності в них однакових прав, використовується механізм ролей. Порядок дії при використонні ролей наступний:
-
Необхідно створити роль.
-
Видати цій ролі достатні права.
-
Призначити конкретним користувачам цю роль.
-
При під’єднанні до бази даних вказати, окрім імені користувача, ту роль, яку буде мати під час з’єднання даний користувач.
Наведемо приклад. Для початку створимо роль READER:
CREATE ROLE READER;
Видамо цій ролі права на читання таблиці:
GRANT Select ON Tab TO READER;
Присвоїмо цю роль користувачу TESTUSER:
GRANT READER TO testuser;
4. Права. Роздача прав.
Права – це дозвіл будь-якому користувачу, збережуваній процедурі або тригеру здійснювати деяку операцію над певним об’єктом бази даних. Існує декілька видів об’єктів, на які можна встановлювати права для користувачів та ролей. Це таблиці і їх поля, подання і збережувані процедури. Існують такі права, що видаються користувачам InterBase (Права також можуть видаватися для процедур):
-
Для таблиць та їх полів – права на виконання операцій SELECT, DELETE, INSERT, UPDATE і REFERENCES (це право дає користувачу можливість створювати обмеження зовнішнього ключа FOREIGN KEY на дану таблицю).
-
Для зображень (VIEW) та їх полів – права на виконання операцій SELECT, DELETE, INSERT, UPDATE.
-
Права на виконання збережуваних процедур – EXECUTE. Користувач, що хоче виконати певну процедуру, повинен мати на це право.
Можна перенести всю логіку роботи з даними в збережувані процедури, роздати їм необхідні права на таблиці, а всім користувачам InterBase повністю заборонити доступ до таблиць баз даних, щоб виключити пряму правку даних і дозволити лише використовувати обчислювальні процедури.
Права на об’єкти бази даних роздаються за допомогою команди GRANT.
Для того, щоб виділити користувачу TESTUSER права на вибірку з таблиці Tab, використовується команда:
GRANT Select ON Tab TO testuser;
Для того, щоб видати право на читання і запис даних, але не на їх зміну, використовується команда:
GRANT Select, Insert ON Tab TO testuser;
Для того, щоб видати відразу всі права, використовують ключове слово ALL:
GRANT ALL ON Tab TO testuser;
Для того, щоб виділити права відразу декільком користувачам, вони розділяються комами.
Якщо ж потрібно видати права відразу всім користувачам InterBase, то можна скористатися ключовим словом PUBLIC:
GRANT Select, Update ON Tab TO PUBLIC;
Окрім видачі прав на всю таблицю інколи виникає потреба обмежити права користувача декількома певними полями в таблиці. Наприклад, користувач BOSS має право змінювати поле BIGMONEY, а решта користувачів можуть його лише переглядати:
GRANT Select ON Tab(BIGMONEY) TO PUBLIC;
GRANT ALL ON Tab(BIGMONEY) TO BOSS;
Аналогічний синтаксис команд використовується і для збережуваних процедур:
GRANT EXECUTE ON PROCEDURE SP_Add TO testuser;
5. Анулювання прав.
Для цього існує команда REVOKE. Вона являє собою копію GRANT, лише із зворотною дією. Приклад:
REVOKE Select ON Tab FROM testuser;
При цьому неможливо якось обмежити або розширити права системного адміністратора SYSDBA.
За замовчуванням права на довільний об’єкт в InterBase має лише його власник, а також системний адміністратор SYSDBA. Відповідно, роздавати права за замов-чуванням може лише власник об’єкта. Інший користувач, що не є власником об’єкта, не може видати іншому користувачу права на цей об’єкт, якщо тільки власник не передав іншому користувачу відповідні права із спеціальною опцієї WITH GRANT OPTION. Вказання цієї опції в кінці звичайного речення GRANT означає, що користувач не лише одержує ці права, але може передавати їх другому користувачу. Наприклад:
GRANT Select ON Tab TO testuser WITH GRANT OPTION;
Тепер користувач TESTUSER може не лише вибирати записи з таблиці Tab, але і передавати право Select (і лише його) іншим користувачам.
Контрольні питання:
-
Вкажіть серію команд створення нового користувача бази даних InterBase?
-
Що таке роль? Як її створити?
-
Опишіть команду роздачі прав.
-
Яка команда надає відразу всі права?
-
Яка команда видає права відразу всім користувачам?
-
Вкажіть команду анулювання прав.