
4. Основні поняття про мову запитів sql
Концепції реляційної моделі вперше були розроблені в роботах американського вченого Ф Кодда (друге назва реляційної моделі – модель Кодда). У моделі визначені як вимоги до організації таблиць із даними, так і мова, що дозволяє працювати з ними - SQL - Structured Query Language - структурована мова запитів. До складу SQL виділені наступні групи інструкцій:
мова опису даних DDL (Data Definition Language):
мова маніпулювання даними (Data Manipulation Language);
мова керування трансакціями.
Інструкції DDL служать для створення, зміни й видалення об'єктів бази даних:
CREATE - створення нових об'єктів (таблиць, полів, індексів і т.д.)
DROP - видалення об'єктів;
ALTER - зміна об'єктів.
Наприклад, потрібно створити таблицю, що містить дані по каталозі фірм. Кожна фірма характеризується кодом, найменуванням, місцем розташування штаб-квартири, обсягом статутного фонду. Даний запит відповідає SQL - вираженню:
CREATE TABLE Фірми
(Кодфирмы TEXT (5),
Назвфирмы TEXT(30),
Адрфирмы TEXT(40),
Устфонд DOUBLE );
Для додавання, наприклад, прізвища директора потрібна SQL - інструкція
ALTER TABLE Фірми ADD COLUMN Директор TEXT(30);
Інструкції DML дозволяють вибирати дані з таблиць, додавати, видаляти й змінювати їх:
SELECT - виконати запит до БД для відбору записів, що задовольняють заданим критеріям, наприклад, вибір всіх даних із БД Фірми:
SELECT *FROM Фірми;
INSERT - додавання записів у таблиці БД;
UPDATE - зміна значень окремих записів і полів.
DELETE - видалення записів із БД.
При використанні цих інструкцій сфера оброблюваних даних визначається спеціальними пропозиціями:
FROM - указує ім'я таблиці БД;
WHERE - специфікує умови, яким повинні задовольняти обирані дані;
GROUP BY - обирані дані повинні бути згруповані;
HAVING - задає умову, якій повинна задовольняти кожна група відібраних записів;
ORDER BY - специфікує порядок сортування записів.
Нехай, наприклад, із БД Фірми потрібно вивести дані про розподіл значень статутних фондів фірм по інтервалах 500 у.е., тобто скільки фірм мають фонд менш 500 у.е., від 500 у.е. до 1000 у.е. і т.д. Тоді потрібна інструкція:
SELECT INT( [Устфонд]/500)*500 As Діапазон,
Count(Кодфирмы) AS Числофирм
FROM Фірми
GROUP BY Int([Устфонд]/500)*500;
Третьою складовою частиною SQL є мова керування трансакціями. Трансакція - це логічно завершена одиниця роботи, що містить одну або більше елементарних операцій обробки даних. Всі дії, що становлять трансакцію, повинні або виконатися повністю, або повністю не виконатися. Інструкції:
COMMIT - фіксація в БД всіх змін, зроблених поточною трансакцією;
SAVEROINT - установка місця збереження (початку трансакції);
ROLLBACK - відкіт змін, зроблених з моменту початку трансакції.
У більшості СУБД елементарні команді, що становлять тіло трансакції, виконуються над деякою копією даних, і тільки якщо вдається успішно довести до кінця, відбувається остаточне відновлення основної бази. Трансакція починається від місця збереження, що задає інструкцією SAVEPOINT і може бути завершена по команді COMMIT або перервана по команді відкіту ROLLBACK. У сучасних СУБД передбачені також засоби автоматичного відкіту трансакцій при виникненні системних збоїв. Таким чином, мова керування трансакціями є найважливішим інструментом підтримки цілісності даних.