SQL:1999

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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. 
  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. 

Література[ред. | ред. код]

Посилання[ред. | ред. код]