- •4.1. Історія мови sql та огляд її можливостей
- •4.2. Засоби пошуку даних
- •4.2.1. Основні конструкції мови, призначені для вибирання даних
- •4.2.2. Вирази, умови та оператори
- •4.2.3. Вибирання з кількох таблиць
- •4.2.4. Використання агрегатних функцій
- •4.2.5. Фраза group by. Групування таблиці за рядками
- •4.2.6. Фраза having. Умова вибирання для груп рядків
- •4.2.8. Порядок обчислення запитів
- •4.2.9. Підзапити
- •4.2.7. Фраза order by. Впорядкування рядків
- •4.2.10. Використання предикатів any, all, exists та in
- •4.2.11. Використання теоретико-множинних операторів
- •4.2.12. Запити, в яких реалізується квантор загальності
- •4.2.13, Використання невизначених значень
- •4.3. Засоби маніпулювання даними
- •4.3.1. Додавання рядків до таблиці. Оператор insert
- •4.3.2. Оновлення даних. Оператор update
- •4.3.3. Видалення рядків таблиці. Оператор delete
- •4.4. Операції над схемою бази даних
- •4.4.1. Створення бази даних. Оператор create database
- •4.4.2. Створення таблиці. Оператор create table
- •4.5.2. Використання індексів
- •4.6. Транзакції
- •4.6.1. Початок і завершення транзакції
- •4.6.2. Скасування транзакції. Точки збереження
- •4.7. Тригери
- •4.8. Додаткові можливості
4.8. Додаткові можливості
Тимчасові таблиці
Деякі СКБД надають можливість створювати тимчасові таблиці, які є звичайними таблицями, що існують лише до завершення сеансу роботи користувача з базою даних. Як правило, такі таблиці входять до складу спеціальної службової бази даних, призначеної для їхнього зберігання. Синтаксис директив для роботи з тимчасовими таблицями аналогічний синтаксису відповідних команд для звичайних таблиць, за винятком того, що є конструкції, призначені для створення тимчасових таблиць. Тимчасові таблиці потрібні для зберігання тимчасових даних, які потрібні лише протягом поточного сеансу зв'язку із СКБД.
Курсори
Курсор є покажчиком на окремий запис тієї чи іншої таблиці. Курсори використовуються переважно в збережених процедурах, а також у програмах, що працюють з базою даних й ініціюють виконання операторів SQL. Використання курсорів дає можливість:
♦ вибрати певну сукупність даних (на зразок тимчасової таблиці, що містить ре зультати виконання оператора SELECT);
+ ініціювати послідовний перегляд сукупності записів;
+ проаналізувати конкретний запис, на який вказує курсор;
♦ виконати зовнішню операцію над поточним записом перш ніж перейти до на ступного.
Ще одним варіантом застосування курсору є тимчасове зберігання результатів запиту для подальшого використання. Якщо зовнішня програма вимагає багаторазового використання певного набору записів, то створюється курсор, яким оперують замість багаторазового виконання оператора SELECT.
Для використання курсору потрібно:
створити курсор;
відкрити курсор для використання в застосуванні чи збереженій процедурі;
ініціювати за допомогою курсору послідовне перебирання записів з метою їхньої обробки;
закрити курсор після завершення роботи з ним (з можливим наступним відкриттям у разі потреби);
•♦• видалити курсор.
На відміну від таблиць, індексів, тригерів та збережених процедур, курсори не є об'єктами бази даних.
Збережені процедури
Збережені процедури - це об'єкти бази даних, які зазвичай містять велику кількість директив SQL. Такі процедури можуть містити сукупність команд (складних запитів, операцій оновлення, додавання та видалення), що часто використовуються як єдине ціле. Збережена процедура дає змогу звернутися до неї як до функції, замість того, щоб послідовно записувати команди SQL, які вона містить. Значне зниження навантаження на канали зв'язку під час роботи користувачів із сервером теж є важливою перевагою збережених процедур, адже замість окремих багаторазових звернень до бази даних виконується єдине звернення до збереженої процедури.
Розширення SQL
Будь-яка СКБД розширює стандарт мови SQL, причому в багатьох випадках SQL трансформується в мову програмування, що надає усі можливості SQL. Наприклад, у Microsoft SQL Server таким розширенням є мова Transact-SQL, в Oracle —
мова PL/SQL. Кожна з них має переваги звичайних мов програмування, підтримує всі можливості стандарту ANSI SQL, а також розширює його.
Крім того, багато СКБД надають засоби для застосування SQL у традиційних мовах програмування. Існують два методи такого використання мови.
Статична SQL припускає вкладання безпосередньо в програмний код речення, що не може бути змінене під час виконання програми. Зазвичай статична SQL вимагає використання предкомпілятора. Наприклад, Oracle має предкомпілято-ри для використання SQL у мовах С, Pascal, Ada, COBOL та FORTRAN.
Динамічна SQL дає змогу програмувати побудову SQL-запитів, що створюються під час виконання програми і передаються СКБД, яка, в свою чергу, передає знайдені дані змінним програми.
Контрольні запитання та завдання
Які можливості надає мова SQL?
Як можна вивести всі стовпці таблиці?
Для чого використовується модифікатор DISTINCT у фразі SELECT?
Як перевизначити імена стовпців таблиці, отриманої в результаті виконання запиту?
Що таке агрегатні функції? Перелічіть їх.
Чи можна використовувати у фразі SELECT водночас імена стовпців та агрегатні функції, якщо немає фрази GROUP BY?
Яке призначення фрази GROUP BY?
Чи можна застосовувати агрегатні функції у фразі WHERE?
Які вирази можна використовувати у фразі SELECT, коли наявна фраза GROUP BY?
Для чого призначена фраза HAVING?
Для чого призначена фраза ORDER BY? За якими стовпцями можна впорядковувати кінцеве відношення?
Які є типи вкладених запитів? Чим вони відрізняються?
Як використовуються невизначені значення?
Назвіть два різновиди команди INSERT.
Яке призначення команди UPDATE?
Що можна видалити за допомогою команди DELETE?
Які можливості надають команди CREATE TABLE, ALTER TABLE i DROP TABLE?
Що таке віртуальні таблиці? Як вони використовуються?
Для чого призначені транзакції?
Що таке тригери? Які можливості вони надають?
