SQL99 складається з 10 частин загальним обсягом більше 1500 сторінок, і є результатом уведення узагальнених ініціалізацій і висловлювань, рекурсивних виразів, підтаблиць та інструментарію для об’єктно-орієнтованих і заснованих на знаннях систем, досягнення інтероперабельності БД. Надає засоби керування транзакціями, разом з інструкціями commit і rollback. Додаткові операції клієнт/сервер, SQL-сеанси і SQL-під’єднання забезпечують доступ до гетерогенних СКБД. SQL99 також поліпшує можливості діагностики долучанням параметрів стану і підтримки інструкцій, додає підтримку динамічного SQL, що надає застосуванню здатності генерувати і виконувати SQL-інструкції протягом виконання застосування.
Мова SQL перестала бути мовою для визначення, доступу і керування однорівневими таблицями, що складаються тільки з типологічно однакових стовпчиків даних. Для підтримки основних моделей даних (реляційної, мережної та ієрархічної) у SQL-99 чітко специфікована незалежна логічна модель, визначена ще в 70-і роки. В унікальній моделі даних SQL99 знайшли відображення:
підтримка моделі CODASYL-набору (масив, елементи якого — зовнішні посилання);
деякі з природних кластерних можливостей ієрархічної моделі даних;
явні багаторівневі І дедуктивні зв’язки аналогічно незалежній логічній моделі;
здатність до прямих рекурсивних зв’язків у схемі БД.
Група SQL Access Group як консорціум із більше 40 членів прискорила проведення робіт макетуванням реалізованих стандартів (створенням покращуваних прототипів). Ця група створила дві специфікації:
АРІ, що визначає вбудовану мову БД, яка архітектурно аналогічна SQL-89 і ґрунтується на описах ANSI і SQL ISO;
форматів І протоколів (FAP - formats and protocol) для комунікацій клієнт/сервер, що ґрунтуються на RDA SQL ISO-специфікацїї.
Далі описано сім чинних частин ISO/IEC 9075, а в 4.4.5.2.1 — інші три.
ISO/IEC 9075-1:1999 «SQL/Фреймворк» призначений для розвитку в SQL-200xhk наступній версії SQL-стандарту і є путівником щодо всіх 10 частин SQL-99, забезпечуючи загальний архів Інформації і таких специфікацій, як угоди і визначення. Визначає дві основні області нового стандарту — структура SQL і ряд незалежно обумовлених пакетів, що їх подають окремими частинами. Аналогічно SQL-2 визначає рівні відповідності, тобто що повинен містити продукт, щоб претендувати на відповідність новому стандарту. Мінімальний рівень відповідності випливає безпосередньо зі стандарту і полягає в наступному. Реалізація SQL підтримує SQL-ядро і, принаймні, для однієї базової мови повинна виконуватися хоча б одна з умов:
прив’язка до модуля SQL-клієнт згідно з ISO/IEC 9075-2,
вбудований SQL згідно з ISO/IEC 9075-2.
SQL-ядро зайняло місце рівня-1 відповідності в SQL92. Проаналізувавши продукцію на ринку, можна побачити, чи став хто-небудь першим у реалізації рівня відповідності SQL-ядру. Основні властивості рівня відповідності SQL-ядру доволі прості, але поки що ніхто з виробників не досяг цього рівня відповідності. За незалежними оцінками, на додавання всіх особливостей, необхідних для підтримки ядра, необхідно як мінімум два цикли реінжинірингу програмного продукту.
Без відповідності SQL-ядру неможлива реалізація жодної частини SQL99 і недоцільно висувати вимоги відповідності. Ядро — опорна точка для всієї реалізації SQL-99.
ISO/IEC 9075-2:1999 «SQL/Основи» охоплює зміни в моделі даних SQL99, опису нових типів змінних, збережених функцій І процедур, тригерів, обумовлених користувачем таблиць і нових об’єктних схем. Коротко особливості SQL/Основ полягають у наступному:
уперше тригери стали частиною SQL-стандарту. Багато SQL-сумісних БД уже використовують ці об’єкти. Тригери розширюють здатність БД відповідати на дії і події, що стосуються даних, збережених в таблицях;
тепер підтримуються абстрактні (незалежні від мов) типи даних, що мають доступні, недоступні і захищені характеристики. Користувач може визначити типи даних, що виявляють певну поведінку та Інкапсулюють внутрішні структури;
уведено тип Рядок-Запис (Row Types), який дає змогу в межах таблиці визначати поля, які становлять колекції (collection of fields);
на відміну від SQL-92, що вимагав для вказування масивів дроблення (hack) даних на простіші структури, SQL тепер явно підтримує масиви;
додані такі предикати, як FOR ALL (для усіх), FOR SOME (для деяких) і SIMILAR ТО (подібний);
віртуальні таблиці (Views) тепер можна модифікувати, що в SQL-92 досягали складними комбінаціями;
за допомогою визначення ролей у SQL-ядро також введені елементи для захисту БД;
точки збереження (інформації про актуальні стани системи) стали частиною SQL-99, що спростило написання SQL-коду для виконання транзакцій;
додано рекурсію як потужну функцію сучасних мов програмування.
ISO/IEC 9075-3:1999 «SQL/CLI (SQL/Інтерфейс рівня виклику)» задає набір специфікацій для мов, використовуваних розробниками СКБД для одержання прямого доступу до SQL-ядра через цілком визначені звертання до підпрограм, що перерозподіляють ресурси, керують під’єднаннями до SQL-серверів, виконують SQL-інструкції з використання динамічного SQL-механізму, одержують діагностичну інформацію і керують завершенням транзакцій.
SQL/CLI — це інтерфейс програмування, розроблений для SQL-доступу до БД із прикладних програм. З використанням CL1 клієнт-серверні інструменти можуть легко звертатися до БД через бібліотеки, що динамічно зв’язуються (DLLs). Так, фірма Microsoft репрезентувала власну реалізацію SQL/CLI, яку назвала ODBC та яка стала застосуванням до SQL2 після того, як для ПК, вироблених Microsoft і Macintosh, CLI і ODBC стали стандартами де-факто для SQL-доступу до БД.
ISO/IEC 9075-4:1999 «SQL/PSM (SQL/Постійно збережувані модулі)» визначають синтаксис і семантику мови БД для їхнього оголошення користувачем і підтримування постійно збережуваних у БД процедур і функцій, їхнього виклику з тексту чи SQL-запиту програм, розроблених стандартними мовами програмування. Ці підпрограми згруповані в модулі, що можуть існувати всередині чи поза доменом БД. Розміщені всередині домену БД — написані на SQL, а розміщені поза ним — іншими мовами програмування, включно з SQL, Сі, Фортран, ПЛ/1, Паскаль і Кобол. Крім опису таблиць для Інформаційної схеми, що описує структуру і зміст постійних модулів SQL, SQL/PSM визначає:
специфікації інструкцій, що визначають передачу керування усередині процедури;
оголошення локальних курсорів;
оголошення локальних змінних;
оголошення локальних тимчасових таблиць.
ISO/IEC 9075-5:1999 «SQL/Bindings (SQL/Прив’язки до основних мов)». Прив'язки забезпечують зв’язок між SQL і іншими мовами програмування. З використанням SQL-прив’язок програмісти на свій вибір можуть вбудовувати SQL-інструкції в код, написаний іншими мовами програмування і такий, що змінює визначення даних (наприклад, створити нові чи змінювати наявні таблиці). Інструкцію ЕХЕС SQL використовують для ініціалізації зв'язку між мовою програмування й ядром БД. Зустрівши цю інструкцію, компілятор мови програмування знає, як окремо від іншого коду скомпілювати наступну за цим ключовим словом інструкцію, оскільки вона призначена для використання ядром БД.
Інструкції можуть також керувати даними в таблиці, вставляючи нові записи або усуваючи наявні. Прив’язки SQL також дозволяють розробникам обробляти особливі ситуації і попередження SQL, а також визначати права і привілеї об’єктів БД.
ISO/IEC 9075-9:2001 «SQL/MED (SQL/Керування зовнішніми даними)» створений зусиллями IBM, Informix, Oracle і Compaq.
ISO/IEC 9075-10:2000 «SQL/OLB (SQL/Прив'язки до об'єктних мов)» як прив’язка SQL до мови Java функціонально прирівнюють до JDBC 1.1. Якщо бути точним, то спочатку вона була частиною групи стандартів SQLJ і розроблена групою компаній: Cloudscape (зараз це частина Informix), Compaq, IBM, Informix, Oracle, Sybase і Sun Microsystems. До статусу ISO/IEC-стандарту робота продовжувалася в напрямку SQL-99, JDBC і Java 1.2.
Розвиток SQL-99. Уже закінено роботи над SQL-2003. Одночасно безупинно й інтенсивно ведуть роботу над 10 частинами SQL-99, що не могло не спричинити появу поправок, доповнень і розширень до вже чинних частин SQL-99.
Так, роботи над ISO/IEC 9075-5:1999 велися недостатньо активно через слабку підтримку і розуміння важливості мовних прив’язок. Зрештою для наступного стандарту SQL-2003 роботи над частинами 2 І 5 об'єднали. Зараз модифікація двох документів зайняла б багато часу, а підсумкові зміни потенційно могли б викликати значне поширення помилок у стандарті. Частину 5 не продовжували у новому проекті SQL-2003; вона не врахована й у майбутніх рекомендаціях до стандартів.
Поправка до SQL-99 «Функції OLAP», затверджена в 2001 році, стосується частин 1—5 SQL-99 і описує засоби, що знижують необхідність високої нормалізації БД, яка виконуються дуже погано. Як єдине рішення денормалізація, здійснювана згортанням ієрархій ненадлишкових таблиць в окрему двовимірну модель Із реплікацією (ідентичними наборами) даних, скорочує надмірні таблиці та прискорює звертання до даних, хоча сповільнює модифікацію даних і підвищує ризик втрати їхньої цілісності. Саме тому є такою високою платня за дублювання даних у надбудованих на поданнях аналітичних звітів денормалізованих структурах БД, відомих як інформаційні сховища (Data Warehouses), над якими надбудовані системи інтерактивного аналітичного оброблення (OLAP — Online Analytical Processing).
Згідно з SQL-99, процес проектування БД перестав бути простим розробленням таблиць у третій нормальній формі з їхньою наступною денормалізацією для ефективнішого оброблення. Тепер потрібна сукупність дій із проектування БД (схожих на ті, що зазвичай виконували до появи SQL99), які припускають наявність великих знань із розроблення застосування для забезпечення повноцінного використання природних ієрархій у структурах даних; це стало тепер можливим у таблицях SQL99. Швидкість оброблення даних значно підвищиться в СКБД, погоджених з SQL99, хоча суттєво збільшиться час на розроблення і реорганізацію БД.
ISO/IEC 13249 «SQL/ММ (SQL/Multimedia)» складається з 5 частин і доповнює SQL-99. Містить повну специфікацію для набору особливостей організації даних для адресації потреб оброблення повністю мовою SQL даних у повнотекстових, просторових, загального призначення і відображуваних специфікаціях І програмах. SQL/ММ — це набір модулів і програм, що стали доступними з використанням унікальних можливостей, запроваджених SQL99. З поданням типів даних UDT чи ADT користувачі можуть використовувати CLI-специфікацію для впровадження SQL-Інструкцій до коду розроблюваних застосувань. Визначення BLOB’ib (великих двійкових об’єктів) і CLOB’iB (великих символьних об’єктів), а також інших спеціальних можливостей SQL99 допускає розробку бібліотек, що підтримують мультймедіа функційність у ядрах БД, для використання розробниками і постачальниками СКБД. Комітети JTC1 ISO/IEC І ANSI ХЗН2, відповідальні за розробку SQL/ММ, продовжують роботу над створенням бібліотек абстрактних типів даних, операцій і функцій для підтримування мультимедиа.
Система словника інформаційних ресурсів IRDS. На основі ANSI Х3.138-1988, ANSI Х3.185—1992, ANSI ХЗ.195-1991 розроблені ISO/IEC 10027:1990 «IRDS Framework» й ISO/IEC 10728:1993 «Інтерфейс служб IRDS» із поправками Amd 1:1995, Amd 2:1996, Amd 3:1996 і Amd 4:1998, що описують прив’язки до мов Сі, Ада І незалежним від мов IDL-інтерфейсами до CORBA і RPC відповідно. Стандарт IRDS розвиває ISO для забезпечення проектування SQL-застосувань.
Існують відмінності в області дії і несумісність між моделлю, розробленою ISO, і моделлю, схваленою ANSI. ISO й ANSI незалежно розробляють інтерфейс служб; в ANSI розроблені засоби експорту/імпорту ANSI Х3.195-1991 «Формат файлу експорту/ім порту IRDS».
У 1992 році ASC ХЗН4 пщтримав нову роботу з визначення оточення (framework) для IRDS наступного покоління (IRDS2). Робота гармоніює з ISO у частині розробки об’єднаних специфікацій для IRDS, які задовольняють потреби багатьох споживачів. Інтерфейс системних служб IRDS до мови програмування Паскаль включений у ISO/IEC 10728:1993.
RDA-протокол віддаленого доступу до даних (Remote Data Access). ISO/IEC 9579:2000 «Віддалений доступ до баз даних для SQL із розширенням безпеки» — це результат перегляду трьох частин попередньої версії ISO/IEC-стандарту (частина 1 «Породжувальна модель, сервіс і протокол» 1993 р„ частина 2 «SQL-специфікації» 1998 р., частина 3 «PICS-проформа SQL-специфікацій» 1998 р.), є єдиним RDA-стандартом і визначає протокол віддаленого доступу до реляційних БД за допомогою OSI-протоколів взаємодії. Цей стандарт універсальний для віддаленого доступу до БД і специфікує власний Інтерфейс до SQL-сумісних БД. Для використання стандарту RDA з не SQL-сумісними мовами БД повинні бути розроблені спеціалізовані стандарти для підтримки цих мов БД.
RDA забезпечує прозорість (незалежність) даних, віддалений доступ до даних і підтримку гетерогенних середовищ, описаних у 4.4. Протокол націлений на реляційні й інші види БД, що підтримують доступ через SQL-інтерфейс.
У групі ISO/IEC JTC1/SC21/WG3 заплановані роботи з універсального RDA, не орієнтованого на спеціальну мову БД (тобто орієнтованого не на SQL).
Мова специфікацій модулів SQL-Ада (SAMeDL). ISO/IEC 12227:1995 визначає стандартний інтерфейс між мовою програмування Ада і SQL-сумісними БД.
Додаткові специфікації
Вихідні стандарти. Специфікації, перелічені в підрозділі, не є частиною POSIX OSE, спрямовані на служби, введені до Настанови, і одержать право на введення до POSIX-OSE після офіційного затвердження їх провідними організаціями розроблення стандартів. Використання специфікацій повинно ретельно розглядатися, оскільки існує чималий ризик під час використання вихідних стандартів до їхнього остаточного затвердження.
ISO/IEC DIS 9075-6 «SQL/XA-специфікація» затрималася в розробці через недостатнє розуміння її призначення. Правда, це не говорить про те, що ХА не знайшов місця в нинішніх БД. Реалізація SQL/ХА ґрунтується на оригінальній специфікації ХА від X/Open Group і стандартизує АРІ між глобальним менеджером транзакцій та диспетчером SQL-ресурсів. Стандартизується виклик функцій, заснованих на семантиці ISO/IEC 10026 "Distributed Transaction Processing" і в диспетчері SQL-pe- сурсів, що підтримують двофазну фіксацію транзакцій (commit).