Структура мови SQL-92.
SQL 92 складається з двох основних компонентів:
-мова DDL (Data Definition Language), призначений для визначення структур бази даних;
-мова DML (Data Manipulation Language), призначений для вибірки і відновлення даних.
Базове відношення - пойменоване відношення, що відповідає сутності на концептуальній схемі, кортежі якого фізично зберігаються в базі даних.
Таким чином, зовнішня модель може складатися одночасно як з базових (відношень концептуального рівня), так і з представлень, відтворених на основі цих базових відношень.
Механізм відображень може використовуватися з кількох причин.
-надає гнучкий механізм захисту за рахунок приховання деяких частин бази даних від визначених користувачів.
-дозволяє організувати доступ користувачів до даних найбільш зручним для них чином.
Одні і ті ж самі дані в той самий час можуть розглядатися різними користувачами зовсім різними способами.
-дозволяє спрощувати складні операції з базовими відношеннями.
Наприклад, якщо відображення буде визначено на основі з'єднанні двох відношень, то користувач зможе виконувати над ним прості унарні операції вибірки і проекції, що будуть автоматично перетворені засобами СУБД в еквівалентні операції з виконанням з'єднання базових відношень.
10.3. Основні оператори мови DML.
-SELECT — виборка данних із БД:
SELECT <предикат> <P1, P2 AS new_name,...> | Виборка з перейменуванням |
SELECT <предикат> YEAR(Дата) AS Rik, MID(P1,1,5) AS PS,... | В тілі речення можуть вживатись функції. По умовчаню більшість SQL-мов підтримують лише 6 агрегатних функцій. Для використання інших функцій необхідно виконати налаштування SQL-сервера IB,FB та інших. |
Предикати речення SELECT: - ALL– включити до результуючого набору всі записи - DISTINCT- включити до результуючого набору записи, у яких значення у вибраних полях не повторюються - DISTINCTROW(дістінкгроу)- включити до результуючого набору записи, у яких значення всіх полів не повторюються - TOP n- включити до результуючого набору n-записів |
Оператор мови SQL складається з речень. Приведені вище оператори також одночасно є першими реченями відповідних операторів мови SQL. До їх складу також можуть входити інші речення:
-FROM –визначає джерело даних запиту в цілому (обов’язкове)
FROM T1 | |
FROM T1,T2 | Декартовий добуток, якщо відсутнє речення WHERE |
FROM T1 INNER JOIN T2 ON T1.P1 = T2.P1 | Прпироднє з’єднання |
FROM T1 LEFT JOIN T2 ON T1.P1 = T2.P1 | Ліве відкрите з’єднання |
FROM T1 RIGHT JOIN T2 ON T1.P1 = T2.P1 | Праве відкрите з’єднання |
-WHERE (веа)<предикат> -речення умови виборки (необов’язкове)
WHERE Ціна > 100 | |
WHERE Дата BETWEEN D1 AND D2 | вибираються записи, в яких значення поля Дата приймає значення в діапазоні D1-D2 включно |
WHERE Назва LIKE *ПК* | Вибираються записи, в яких значення поля Назва включають підрядок ‘ПК’ |
WHERE Місяць IN (1;3;9) | Вибираються записи, для яких поле Місяць приймає значення 1,3 та 9 |
WHERE Дата = #5/10/96#; | Використовує американський стандарт дати 5.10.1996 чи 10.5.1996 |
-ORDER BY(ордер бай) <> - речення порядку сортування (необов’язкове)
ORDER BY P1 ASC, P2 DESC | Сортувати результуючий набір по зростаню значень поля P1 і вседені однакових груп поля P1 по спаданю значень поля P2. Предикат ASC (від "A" до "Я" і від 0 до 9) необовязковий DESC (від "Я" до "A" і від 9 до 0) |
-GROUP BY <> -речення групування (необов’язкове)
Використовується разом з агрегатними функціями
GROUP BY <список полів групування> | вказуються поля по яких виконується групування |
SELECT P1, Sum(SDEB) AS SD FROM DEP_SUM GROUP BY P1; | Обчислення результуючої суми з групуванням по полю P1. Можуть використовуватись наступні функції групування: SUM(P1),MAX(P1),MIN(P1),FIRST(P1),COUNT(каунт)(P1), AVG(P1) |
-NAVING(невінг) <предикат> - речення умови виборки для результату групування (необов’язкове)
HAVING Sum(Ціна*Кількість) > 100 | Це речення може містити до 40 виразів звязаних логічними операторами AND або OR |
10.4 Зміна вмісту бази даних. Запити на оновлення даних
-INSERT INTO (інсерт інту)— вставка данних в таблицю:
INSERT INTO T1 (KPIDR,NPIDR) SELECT NFAK, NAMF FROM T2; | Формат, що забезпечує вставку з іншої таблиці |
INSERT INTO T1 (KPIDR,NPIDR) VALUES (велуєс) (12,”ФКСП”) | Формат, внесення константи |
-UPDATE (апдейт)— оновлення данних в таблиці
UPDATE T1 SET P1=<нове значення>,P2=<нове значення>; | Формат оператора редагування |
UPDATE T1 SET P1=<нове значення> WHERE <предикат>; | Найбільш вживаніший формат |
-DELETE — видаленя данных із таблиці.
DELETE FROM T1; | Знищує всі записи таблиці |
DELETE FROM T1 WHERE <предикат>; | Найбільш вживаніший формат |
Є ще одна стандартна мова роботи з базами даних — Network Database Language (NDL), яка побудована на використані мережевої моделі, але має обмежене застосуваня.
Прості запити. Сортування результатів.
Агрегатні функції. Запити з групуванням.
Складні запити. Підзапити.
Ключові слова ANY і ALL. Багатотабличні запити.
Ключові слова EXISTS і NOT EXIST.
Комбінування результуючих таблиць (операції UNION, INTERSECT і EXCEPT).
10.5. Оператори адміністрування:
Для введення елементів системи безпеки застосовується інструкція GRANT, за допомогою якої тим чи іншим користувачам надаються певні привілеї на використання тих чи інших об'єктів бази даних. В інструкції GRANT задається комбінація ідентифікатора користувача, об'єкта і привілеїв. Надані привілеї можна пізніше анулювати за допомогою інструкції REVOKE.
GRANTSELECTON VIDDIL TO BANK;- надати право SELECT (виборки, а ще можуть бути: INSERT-вставки,UPDATE-редагування,DELETE-видалення) до об’єкта БД VIDDIL(таблиця, представлення)об’єктуBANK(роль, користувач, процедура, тригер)
GRANT EXECUTE ON PROCEDURE NPERIOD TO BANK; - надати право EXECUTE (запуску) процедури NPERIOD об’єкту BANK
![]() |
Рис. 7.11.1 Основні етапи процесу оптимізації запитів
10.63. Загальний огляд методів обробки запитів.
Першим етапом обробки запитів є декомпозиція. Її призначення полягає в перетворені запиту з мови високого рівня в вираз реляційної алгебри, с наступною перевіркою на предмет синтаксичної та семантичної коректності.
За звичай декомпозиція включає стадії аналізу, нормалізації, семантичного аналізу, спрощення та реструктуризації запиту.
На стадії аналізу виконується лексичний та синтаксичний аналіз запиту з використанням методів, що використовуються в компіляторах мов програмування високого рівня.
Додатково уточнюється, наявність в системному каталозі визначень для вказаних в запиті відношень та їх атрибутів.
Окрім цього контролюється, чи відповідають вказані в запиті операції над об’єктами бази даних їх типу. Наприклад:
SELECT P1,P2 /4 AS PP2
FROM T2
WHERE P5 > 10;
Оптимізація запиту – це процедура вибору найбільш ефективного плану виконання запиту.
10.7. Архітектура клієнт-сервера і мова SQL.
Особливо добре SQL працює в системі клієнт-сервер. У такій системі користувачі працюють багато клієнтських машин одночасно, з'єднаних із серверним комп'ютером.
У прикладній програмі, що працює на клієнтському комп'ютері, створюються команди SQL. Та частина системи СУБД, яка знаходиться на клієнтському комп'ютері, передає ці команди на сервер по каналу зв'язку, що з'єднує сервер з клієнтом. А та частина СУБД, яка знаходиться на сервері, інтерпретує і виконує отриману команду SQL, а потім по каналу зв'язку відправляє результати назад до клієнта.
Такого роду система дозволяє ефективніше використовувати пропускну здатність каналу зв'язку.
Архітектура клієнт-сервер, доповнюючи характеристики SQL, дає можливість у малих, середніх і великих мережах отримувати досить високу продуктивність при помірних витратах.