Введение в стандарты языка баз данных SQL

Сводка расширений SQL/ по отношению к SQL/


В этом разделе мы приводим сводку основных новых свойств, введенных в SQL/92.

  1. Все, что относится к встроенному SQL. Встроенный SQL не являлся частью SQL/89 и был частично специфицирован только в приложениях. Кроме того, в этих приложениях не специфицировалась поддержка языков Си и Ада.
  2. Все, что относится к работе с каталогами и почти все, что касается работы со схемами. В SQL/89 имелся оператор CREATESCHEMA, но не было оператора DROPSCHEMA, и все операторы CREATETABLE, CREATEVIEW и GRANT должны были специфицироваться как "элементы схемы" внутри такого оператора CREATESCHEMA (т.е. не было понятия независимого выполнения таких операторов, как в SQL/92). Однако понятие схемы было по существу не определено. Заметим также, что CREATETABLE, CREATEVIEW и GRANT в SQL/89 были только операциями определения данных; не существовали DROPTABLE, ALTERTABLE и т.д.
  3. Возможность включать в модуль все виды операторов SQL. Как уже отмечалось, CREATETABLE, CREATEVIEW и GRANT в SQL/89 должны были выполняться как компоненты операции CREATESCHEMA; на самом деле, CREATESCHEMA, CREATETABLE, CREATEVIEW и GRANT вместе составляли отдельный "язык схемы", который отличался от "языка модулей". Нежелательное и не необходимое различие между языком схем и языком модулей почти полностью устранено в SQL/92.
  4. Возможность включать все виды операций SQL (в частности, возможность смешивать операции определения данных и манипулирования данными) в одну транзакцию. По причине разделения языков схем и модулей, отмеченного в предыдущем параграфе, SQL/89 не обладал этим свойством.
  5. Все, что относится к управлению подключениями и сессиями.
  6. Оператор SETTRANSACTION, включающий, в частности, возможность определения уровня изоляции (в SQL/89 поддерживался только уровень SERIALIZABLE, и только неявно).
  7. Все, что относится к работе с доменами, включая CREATE, ALTER и DROPDOMAIN.
  8. Операторы ALTER и DROPTABLE.
  9. Все, что связано с работой с временными таблицами.
  10. Варианты CASCADED и LOCAL опции проверки при CREATEVIEW.
  11. Оператор DROPVIEW.
  12. Почти все, что относится к работе с ограничениями целостности, за исключением случаев определения возможного и внешнего ключей и одного простого вида проверочного ограничения базовой таблицы. В SQL/89 имелись возможные и внешние ключи и проверочные ограничения для одной строки (т.е. ограничения, которые можно проверять для данной строки, рассматривая ее в изоляции). Однако отсутствовали общие (с несколькими строками) ограничения, не было разновидностей FULL и PARTIAL для соответствия внешних ключей и не было отложенных проверок (DEFERRABLE, INITIALLYDEFERRED, SETCONSTRAINTS и т.д.).
  13. Оператор REVOKE.
  14. Строки символов переменной длины.
  15. Битовые строки постоянной и переменной длины.
  16. Все, что относится к работе с датами и временем.
  17. Почти все, что касается работы с наборами символов, сравнениями, трансляциями и преобразованиями (включая поддержку национальных наборов символов и наборов символов для идентификаторов). В SQL/89 поддерживался тип данных строк постоянной длины вместе с соответствующим набором операторов присваивания и сравнения, но это все, что было (в частности, набор символов и правила их сравнения определялись по существу в реализации).
  18. Все скалярные операторы и функции (за исключением +, -, *, / и USER), включающие, в частности, операторы CASE и CAST для управления преобразованиями типов данных.
  19. Существенно улучшенная ортогональность в скалярных выражениях, включая, в частности, возможность использования скалярных выражений из базы данных как операндов внутри таких выражений.
  20. Спецификации FORUPDATE, SCROLL и INSENSITIVE в DECLARECURSOR.
  21. Существенно улучшенная ортогональность в табличных выражениях, включая

      (а) возможность вводить имена столбцов результата и имена таблиц;

      (b) набор правил вывода имени столбца;

      (c) возможность вложенных табличных выражений.

  22. Явная поддержка INTERSECT, EXCEPT и JOIN (включая естественные и внешние соединения).
  23. Конструкторы строк, включая, в частности, возможность использования таких конструкторов в условных выражениях наряду со скалярами.
  24. Новые условия MATCH и UNIQUE.
  25. Новые условия IS[NOT]TRUE, IS[NOT]FALSE и IS[NOT]UNKNOWN.
  26. Все, что касается динамического SQL.
  27. Информационная схема.
  28. SQLSTATE и все, что касается работы с областью диагностики.
  29. Более исчерпывающее обращение с прямым SQL (хотя многие конкретные вещи все еще остались определяемыми в реализации).



Содержание раздела