- •Мова sql(Structured Query Language) – як універсальний засіб створення баз даних, маніпулювання данними та отримамання потрібної інформації.
- •Умова відбору (ключове слово where)
- •Зрівняння.
- •Ліве з’єднання (left join)
- •Сортування результату (фраза order by)
- •Групування результатів (фраза group by). Агрегатні функціії.
- •Використання фрази group by
- •Використання фрази having
- •Підзапити
- •Ключові слова exists I not exists
- •Модифікація даних (оператор update)
- •Видалення даних з бази(оператор delete).
- •Створенння таблиць (оператор create table).
- •Check (Naukov_stupin in(‘не має’, ‘кадидат’, ‘доктор’))
- •Використання транзакцій.
- •Управління доступом даних
- •Insert – право втавляти в таблицю нові рядки;
- •Надання привілеїв іншим користувачам (оператор grant)
- •Insert - користувач з цим привілеєм може виконувати оператор insert для цієї таблиці;
- •Відміна наданих привілеїв (оператор revoke)
Управління доступом даних
Для організації захисту інформації в базі даних в мові SQL передбачені оператори GRANT i REVOKE. Механізм захисту побудований на використанні ідентифікаторів користувачів, які надають ним відповідні права і привілеї. Ідентифікатором користувача називається звичний ідентифікатор мови SQL (допустима послідовність символів) для ідентифікації певного користувача бази даних. Кожному користувачеві бази адміністратор бази даних (АБД) назначає певний ідентифікатор, який повязаний з певним паролем. Кожний SQL-оператор виконується від імені деякого користувача. Ідентифікатор користувача вказує на обєкти бази даних з якими даний користувач може працювати а також які операції доступні для даного користувача.
Кожний створений в середовищі SQL об’єкт має свого господаря. Господар задається ідентифікатором користувача, визначеному у фразі AUTORIZATION тієї ж схеми, якій належить даний об’єкт.
Привілеї. Привілеями називають дії, які користувач має право застосовувати до таблиці бази даних або до представлення. В стандарті ISO визначені такі привілеї:
-
SELECT – право вибирати дані з таблиць;
-
Insert – право втавляти в таблицю нові рядки;
-
UPDATE – право змінювати дані в таблиці;
-
DELETE – право видаляти рядки з таблиці;
-
REFFERENCES – право посилатись на стовпчики вказаної таблиці.
Привілеї INSERT і UPDATE можуть застосовуватись і для окремих стовпчиків таблиць. Це означатиме, що користувач матиме можливість вносити зміни лише у вказані стовпчики зазначених таблиць. Якщо користувач з допомогою оператора CREATE TABLE створює нову таблицю, він автоматично стає її господарем і має повний набір привілеїв по відношенню до цієї таблиці.
Надання привілеїв іншим користувачам (оператор grant)
Кожний користувач в середовищі SQL має спеціальний ідентифікатор (послідовність символів), який називають ідентифікатором користувача (authorization ID). В багатокористувацьких системах є процедура входу в систему, у відповідності з якою здійснюється доступ до бази даних. Ця процедура визначає ID, який пов’язаний з даним користувачем. Кожний користувач має свій ID, хоча для різних користувачів допускається використання однакових ID. Кожний користвач має свій набір привілеїв, тобто множину тих дій, які йому дозволено виконувати (вхід в систему це мінімальний привілей). Привілеї з часом можуть змінюватись: нові привілеї назначатись – старі відмінятись. Привілей дається конкретному користувачеві для окремої таблиці або представлення. Користувач, який створив дану таблицю, має всі права на неї. Він також може передати частину з них іншому користувачеві.
Наведемо стандартні привілеї, які може назначити користувач:
-
SELECT – користувач з цим привілеєм може виконувати запити для цієї таблиці;
-
Insert - користувач з цим привілеєм може виконувати оператор insert для цієї таблиці;
-
UPDATE - користувач з цим привілеєм може виконувати оператор UPDATE для цієї таблиці. Привілей обмежується множиною стовпчиків цієї таблиці;
-
DELETE - користувач з цим привілеєм може виконувати оператор DELETE для цієї таблиці.
-
REFERENCES - користувач з цим привілеєм може визначити зовнішній ключ, який використовує один або декілька стовпчиків.
Механізм SQL дозволяє виконати призначення користувачам цих привілеїв з допомогою оператора GRANT. Оператор GRANT має такий формат:
GRANT {privileges_list | ALL PRIVILEGES}
ON object_name
TO {autorization_id_list | PUBLIC}
[WITH GRANT OPTION]
Параметр privileges_list задає список, що містить один або більше стандартних привілеїв розділених комами. Крім того, для зручності, введено ключове слово ALL PRIVILEGES, що означає надання всіх привілеїв.
Параметр object_name задає ім’я об’єкту бази даних (таблиці, представлення, домена, набору символів).
Фраза WITH GRANT OPTION є необовязковою. З її допомогою задають всім вказаним у списку autorization_id_list користувачам передавать іншим користувачам всі надані їм привілеї. Якщо ця фраза опущена, одержувач привілеїв не зможе передавать свої права іншим користувачам.
Приклади. Надання всіх привілеїв щодо таблиці Osoba користувачеві Stud.
GRANT ALL PRIVILEGES
ON Osoba
TO Stud WITH GRANT OPTION
В результаті користувач з ідентифікатором Stud одержить право на модифікацію даних (вставлять, видалять а також поновлювати рядки) в таблиці Osoba а також вибирати дані з цієї таблиці. Оскільки в цьому операторі присутня фраза WITH GRANT OPTION, користувач Stud може передавати всі або частину своїх прав іншим користувачам.
Наступний приклад показує як надати користувачеві з ідентифікатором Admin привілеї SELECT і UPDATE для стовпчика PRIZ таблиці Osoba.
GRANT SELECT,UPDATE(PRIZ)
ON Osoba
TO Admin
Оскільки фраза WITH GRANT OPTION відсутня, користувач Admin не зможе передати свої права іншим користувачам.
Наступний приклад показує як надати декільком користувачам з ідентифікаторами Admin і Stud привілею SELECT для таблиці Osoba.
GRANT SELECT
ON Osoba
TO Admin, Stud
Приклад надання привілею SELECT всім користувачам:
GRANT SELECT
ON Osoba
TO PUBLIC
Використання ключового слова PUBLIC означає, що всі користувачі(які вже зареєстровані в базі, так і майбутні) одержать право використання таблиці Osoba в операторі SELECT.
