SQL:1999 (також звана SQL 3) була четвертою редакцією мови запитів до баз даних SQL. Вона ввела велику кількість нових можливостей, багато з яких вимагали уточнення у наступній версії SQL:2003. Наразі SQL:1999 є застарілою.

Огляд ред.

Документи стандарту ISO було опубліковано між 1999 та 2002 роками в декілька етапів, перший з яких складався з кількох частин. На відміну від попередніх редакцій, у назві стандарту було використано двокрапку замість дефісу задля узгодження з назвами інших стандартів ISO. Перший етап SQL:1999 мав п'ять частин:

  • SQL/Framework[1]
  • SQL/Foundation[2]
  • SQL/CLI[en]: оновлене визначення розширення Call Level Interface, спочатку опублікованого 1995 року і також відомого як CLI-95[3]
  • SQL/PSM: оновлене визначення розширення Persistent Stored Modules, спочатку опублікованого 1996 року і також відомого як PSM-96[4]
  • SQL/Bindings[5]

Наступні три частини, що також розглядаються як частини SQL:1999, було опубліковано згодом:

  • SQL/MED — Керування зовнішніми даними (SQL:1999 частина 9)[6]
  • SQL/OLB[en] — Зв'язування об'єктних мов (SQL:1999 частина 10)[7]
  • SQL/JRT[en] — Підпрограми та типи SQL, що використовуються у мові програмування Java  (SQL:1999 частина 13)[8]

Нові можливості ред.

Типи даних ред.

Булеві типи даних ред.

Стандарт SQL:1999 оголошує булів тип,[2] але багато комерційних серверів SQL (Oracle Database, IBM DB2) не підтримують його як тип стовпчика чи змінної, і не дозволяють його у результатному наборі. Microsoft SQL Server є однією з кількох систем баз даних, що як слід підтримує значення BOOLEAN, використовуючи власний тип даних BIT. Кожні 1-8 полів BIT займають один повний байт дискового простору. MySQL інтерпретує BOOLEAN як синонім TINYINT (8-бітове знакове ціле число).[9] PostgreSQL забезпечує стандартний відповідник булевого типу.[10]

Відмітні користувацькі типи повноважень ред.

Іноді званих просто відмітними типами (англ. distinct types), їх було введено як необов'язкову можливість (S011) дозволяти наявним атомарним типам розширюватися різним сенсом, створюючи нові типи, і таким чином вмикаючи механізм перевірки типів для виявлення деяких логічних помилок як-от випадкового додавання віку до платні. Наприклад:

create type age as integer final;
create type salary as integer final;

створює два різні та несумісні типи. Відмітні типи SQL використовують еквівалентність за назвою, а не структурну, як typedef[en] у мові C. Виконання сумісних операцій над стовпчиком або даними відмітних типів лишається можливим шляхом явного застосування CAST.

Їх підтримують кілька систем SQL, наприклад, IBM DB2.[11] Oracle Database наразі їх не підтримує, рекомендуючи натомість їх емуляцію однозначним структурованим типом[en].[12]

Структуровані користувацькі типи ред.

Детальніші відомості з цієї теми ви можете знайти в статті Структурований тип[en].

Є основою розширення об'єктно-реляційної бази даних у SQL:1999. Вони аналогічні до класів у об'єктно-орієнтованих мовах програмування. SQL:1999 дозволяє лише просте успадкування.

Загальні табличні вирази та рекурсивні запити ред.

SQL:1999 додає конструкцію WITH [RECURSIVE], що дозволяє рекурсивні запити, які, подібно до транзитивного замикання, задаються у мові запитів; див. загальні табличні вирази.

Деякі можливості OLAP ред.

GROUP BY було розширено опціями ROLLUP, CUBE та GROUPING SETS.

Керування доступом на основі ролей ред.

Підтримка керування доступом на основі ролей (англ. Role-based access control — RBAC) за допомогою CREATE ROLE.

Ключові слова ред.

SQL:1999 вводить ключове слово UNNEST.[13]

Примітки ред.

  1. ISO/IEC 9075-1:1999. Міжнародна організація зі стандартизації. 1999. Архів оригіналу за 24 грудня 2016. Процитовано 15 лютого 2017.
  2. а б ISO/IEC 9075-2:1999. Міжнародна організація зі стандартизації. 1999. Архів оригіналу за 24 грудня 2016. Процитовано 15 лютого 2017.
  3. ISO/IEC 9075-3:1999. Міжнародна організація зі стандартизації. 1999. Архів оригіналу за 25 грудня 2016. Процитовано 15 лютого 2017.
  4. ISO/IEC 9075-4:1999. Міжнародна організація зі стандартизації. 1999. Архів оригіналу за 25 грудня 2016. Процитовано 15 лютого 2017.
  5. ISO/IEC 9075-5:1999. Міжнародна організація зі стандартизації. 1999. Архів оригіналу за 24 грудня 2016. Процитовано 15 лютого 2017.
  6. ISO/IEC 9075-9:2001. Міжнародна організація зі стандартизації. 2001. Архів оригіналу за 24 грудня 2016. Процитовано 15 лютого 2017.
  7. ISO/IEC 9075-10:2000. Міжнародна організація зі стандартизації. 2000. Архів оригіналу за 25 грудня 2016. Процитовано 15 лютого 2017.
  8. ISO/IEC 9075-13:2002. Міжнародна організація зі стандартизації. 2002. Архів оригіналу за 25 грудня 2016. Процитовано 15 лютого 2017.
  9. MySQL 5.0 Reference Manual — 11.4 Using Data Types from Other Database Engines. Dev.mysql.com (англійською) . MySQL. 9 січня 2010. Архів оригіналу за 7 лютого 2014. Процитовано 30 січня 2014.
  10. PostgreSQL documentation about Boolean Type (англійською) . PostgreSQL. Архів оригіналу за 9 березня 2018. Процитовано 15 лютого 2017.
  11. IBM Information Management Software for z/OS Solutions Information Center. Publib.boulder.ibm.com (англійською) . Процитовано 30 січня 2014.{{cite web}}: Обслуговування CS1: Сторінки з параметром url-status, але без параметра archive-url (посилання)
  12. Oracle Compliance To Core SQL:2003 (англійською) . Oracle Corporation. Архів оригіналу за 2 грудня 2013. Процитовано 30 січня 2014.
  13. Джонс, Arie; Stephens, Райан К.; Plew, Рональд Р.; Гарретт, Роберт Ф.; Крігел, Алекс (2005). Appendix B ANSI and Vendor Keywords. SQL Functions Programmer's Reference. Джон Вайлі та сини. с. 680. ISBN 9780764598074. Архів оригіналу за 12 січня 2021. Процитовано 16 травня 2016.

Література ред.

Посилання ред.