- •Тема 5. Мова реляційних запитів sql.
- •Роль та історія розвитку sql.
- •Простий приклад
- •Історія
- •Стандарти
- •Питання сумісності
- •Переваги стандартів sql
- •1. Незалежність від конкретної субд
- •2. Наявність стандартів
- •3. Декларативність
- •Недоліки стандартів sql
- •1. Невідповідність реляційної моделі даних
- •Коротко про стандарт sql:2003
- •Cтворення таблиці
- •Видалення таблиці
- •Вираз select
- •Частина from
- •Частина where
- •Відповідність шаблону
- •Значення null
- •Частина order by
- •Приклад нотації для визначення оператора select в Oracle
- •Декартів добуток
- •Тета-з’єднання
- •Натуральне з’єднання
Стандарти
Історія версій стандартів-ревізій SQL:
Рік |
Назва |
Коментар |
1986 |
SQL-86, SQL-87 |
Перший варіант стандарту, прийнятий інститутом ANSI і схвалений ISO у 1987 році. |
1989 |
SQL-89 |
Трохи допрацьований варіант попереднього стандарту. |
1992 |
SQL-92, SQL-2 |
Значні зміни (ISO 9075); рівень Entry Level стандарту SQL-92 був прийнятий як стандарт FIPS 127-2. |
1999 |
SQL:1999, SQL-3 |
Додана підтримка регулярних виразів, рекурсивних запитів, підтримка тригерів, базові процедурні розширення, нескалярні типи даних і деякі об'єктно-орієнтовані можливості. |
2003 |
SQL:2003 |
Введені розширення для роботи з XML-даними, віконні функції (застосовувані для роботи з OLAP-базами даних), генератори послідовностей і засновані на них типи даних. |
2006 |
SQL:2006 |
Функціональність роботи з XML-даними значно розширена. З'явилася можливість спільно використовувати в запитах SQL і XQuery. |
2008 |
SQL:2008 |
Поліпшено можливості віконних функцій, усунуті деякі неоднозначності стандарту SQL: 2003 |
Рис.5.1. Співвідношення діалектів SQL
Приведемо коротку характеристику поточного стану стандарту SQL:1999 і перспектив його розвитку. Насамперед, помітимо, що кожен новий варіант стандарту мови SQL був істотно об'ємніше попередніх версій. Так, якщо стандарт SQL/89 займав близько 600 сторінок, то обсяг SQL/92 становив на 300 із зайвим сторінок більше. Найперші проекти SQL3 займали близько 1500 сторінок. Це цілком природно, тому що мова ускладнюється, а його специфікації стають більше детальними й точними. Але розроблювачі SQL3 прийшли до виводу, що при таких обсягах стандарту ймовірність його прийняття й наступної успішної підтримки помітно зменшується. Тому було ухвалене рішення розбити стандарт на відносно незалежні частини, які можна було б розробляти й підтримувати окремо.
В 1999 р. були прийняті п'ять перших частин стандарту SQL:1999. Перша частина (SQL/Framework) присвячена опису концептуальної структури стандарту. У цій частині приводиться розгорнута анотація наступних чотирьох частин і формулюються вимоги до реалізацій, що претендують на відповідність стандарту.
Друга частина SQL:1999 (SQL/Foundation) утворить базис стандарту. Уводиться система типів мови, формулюються правила визначення функціональних залежностей і можливих ключів, визначаються синтаксис і семантика основних операторів SQL:
операторів визначення й маніпулювання схемою бази даних;
операторів маніпулювання даними;
операторів керування транзакціями;
операторів керування підключеннями до бази даних і т.д.
Третю частину займає уточнена в порівнянні з SQL/92 специфікація SQL/CLI. У четвертій частині специфікується SQL/PSM - синтаксис і семантика мови визначення збережених процедур. Нарешті, у п'ятої частини - SQL/Bindings - визначаються правила зв'язування SQL для стандартних версій мов програмування FORTRAN, COBOL, PL/1, Pascal, Ada, C й MUMPS.
SQL / CLI, або інакше званий Call-Level Interface (інтерфейс рівня викликів), - розширення стандарту SQL, закріплене в ISO / IEC 9075-3:2003. Дане розширення визначає загальну взаємодію компонентів (структур і процедур), яке може використовуватися при виконанні SQL-запитів від програми, написаної на інших мовах програмування. Розширення SQL / CLI визначає порядок, в якому окремо викликаються SQL-запити і SQL / CLI-процедури з вихідного коду викликає додатка.
SQL / PSM - стандарт для SQL / Persistent Stored Modules (постійно збережувані модулі), розроблений Американським національним інститутом стандартів (ANSI) в якості розширення SQL. Стандарт підтримує процедурне програмування на додаток до виразів запиту мови SQL.
Розширення SQL / PSM закріплено стандартом ISO / IEC 9075-4:2003. SQL / PSM стандартизує процедурне розширення для SQL, включаючи управління потоком виконання, обробку умов, обробку прапорів станів, курсори і локальні змінні, а також привласнення виразів змінним і параметрами. SQL/PSM формалізує оголошення і підтримку постійних підпрограм мов баз даних (наприклад, «збережених процедур»).
У стандарт SQL:1999 повинні були ввійти ще кілька частин. Серед них специфікації наступних засобів:
керування розподіленими транзакціями (SQL/Transaction);
підтримка темпоральних властивостей даних (SQL/Temporal);
керування зовнішніми даними (SQL/MED);
зв'язування з об’єктно-орієнотованими мовами програмування (SQL/OLB);
підтримка оперативної аналітичної обробки (SQL/OLAP).
Наприкінці 2003 р. був прийнятий й опублікований новий варіант міжнародного стандарту SQL:2003. Багато фахівців уважали, що у варіанті стандарту, що випливає за SQL:1999, будуть усього лише виправлені неточності SQL:1999. Але насправді, в SQL:2003 специфікований ряд нових і важливих властивостей, частина з яких ми торкнемося в цьому курсі.
Перетерпіла деякі зміни загальна організація стандарту. Стандарт SQL:2003 складається з наступних частин:
9075-1, SQL/Framework;
9075-2, SQL/Foundation;
9075-3, SQL/CLI;
9075-4, SQL/PSM;
9075-9, SQL/MED (Management of External Data );
9075-10, SQL/OLB - Object Language Bindings (объектное языковое связывание);
9075-11, SQL/Schemata - Information and Definition Schemas (Схемы информации и определения);
9075-13, SQL/JRT - SQL Routines and Types for the Java Programming Language (Подпрограммы и типы SQL для языка программирования Java);
9075-14, SQL/XML - XML-Related Specifications (Спецификации, связанные сXML).
Частини 1-4 й 9-10 з необхідними змінами залишилися такими ж, як й в SQL:1999 (розд. 7.4). Частина 5 (SQL/Bindings) перестала існувати; відповідні специфікації включені в частину 2. Розділ частини 2 SQL:1999, присвячений інформаційній схемі, виділений в окрему частину 11. З'явилися дві нові частини - 13 й 14. Частина 13 повністю називається «SQL Routines and Types Using the Java Programming Language» («Використання підпрограм і типів SQL у мові програмування Java»). Поява такої частини стандарту виправдано підвищеною увагою до мови Java з боку провідних виробників SQL-орієнтованих СУБД. Нарешті, остання частина SQL:2003 присвячена специфікаціям язикових засобів, що дозволяють працювати з XML-документами в середовищі SQL.
Провідні постачальники відповідних СУБД (сьогодні це компанії IBM, Oracle й Microsoft) намагаються максимально швидко реагувати на потреби й кон'юнктуру ринку й розширюють свої продукти всі новими й новими можливостями. Очевидна потреба в стандартизації відповідних язикових засобів, але процес стандартизації явно не поспіває за змінами, що відбуваються.
