SQL-92

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

SQL-92 — третья версия языка запросов к базам данных SQL. В отличие от стандарта SQL-89, третья версия стала весьма существенным обновлением языка. За исключением некоторых мелких противоречий стандарт SQL-89 практически полностью совместим со стандартом SQL-92.

История[править | править вики-текст]

Первый международный стандарт языка SQL был принят в 1989 г. (он получил соответствующее обозначение SQL/89), и подавляющее большинство СУБД начала 90-х объявили о поддержке этого стандарта. Однако у этого стандарта выявились недостатки, а именно: очень многие важные свойства языка стандарт устанавливает как определяемые в реализации или зависимые от нее. Это дало большой простор к расхождениям между различными реализациями SQL. Во-вторых, некоторые практически важные аспекты языка вообще не упоминаются в стандарте SQL/89. К ним прежде всего относятся правила встраивания языка SQL в язык программирования Си и так называемый динамический SQL. В результате производители СУБД реализовывали собственные механизмы, причем малосовместимые друг с другом. В результате сложилась ситуация, когда код одной СУБД, соответствующей стандарту SQL/89, оказался непереносим на другую СУБД, также соответствующую стандарту SQL/89[1].

В целях устранения недостатков стандарта SQL/89 в конце 1992 г. был принят новый международный стандарт языка SQL (SQL/92). Он также оказался не лишен недостатков, но все же является существенно более точным и полным, чем SQL/89. SQL/92 не только восполняет недостатки SQL/89, но содержит также много новых свойств.

Основные отличия от SQL/89[править | править вики-текст]

В новом стандарте появилась возможность использования типа данных символьных строк переменной длины (то есть при спецификации столбца указывается предельно допустимый размер хранимой строки в символах, а реально в базе данных хранится ровно столько символов, сколько их ввел пользователь), введены типы данных битовых строк постоянной и переменной длины (как они реально хранятся в базе данных в стандарте не определяется), стандартизованы типы данных для работы с датой и временем: DATE (дата), TIME (время) и INTERVAL (временной интервал)[2].

При создании схемы базы данных (впоследствии можно изменить) можно определить особенности национального набора символов, включая правила упорядочения, при этом могут определяться наборы символов, используемые как в хранимых текстовых строках, так и в идентификаторах[2].

В новом стандарте появилась возможность создавать хранимые и представляемые таблицы и задавать или удалять привилегии доступа при помощи операторов CREATE TABLE, CREATE VIEW, GRANT, REVOKE) в любой момент времени в любой транзакции вне оператора определения схемы. Появились операторы уничтожения таблиц (DROPTABLE и DROP VIEW), которые также можно выполнять внутри любой транзакции (при наличии соответствующих привилегий). Также впервые определен оператор ALTER TABLE, позволяющий динамически изменять характеристики ранее созданной таблицы (в частности добавлять к ней новые столбцы)[2].

Список нововведений[править | править вики-текст]

  • SQL Agent
  • Новые типы данных: DATE, TIME, TIMESTAMP, INTERVAL, строковый тип BIT, строковый тип VARCHAR, а также строки NATIONAL CHARACTER.
  • Поддержка дополнительных наборов символов помимо необходимых для представления SQL-запросов.
  • Новые скалярные операции, например, конкатенация строк, математические операции с датой и временем, поддержка условий.
  • Новые операции с наборами, например, UNION JOIN, NATURAL JOIN, поддержка проверки различия в наборах, пересечение наборов.
  • Поддержка изменения определений схем за счет использования ALTER и DROP.
  • Встроенная поддержка языков Си, Ада и MUMPS.
  • Новые возможности пользовательских прав.
  • Новый функционал проверки целостности данных, например, CHECK-ограничение.
  • Новые определния схем для «информации».
  • Динамическое исполнение запросов (в отличие от заранее подготавливаемых).
  • Улучшенная поддержка удаленного доступа к базам данных.
  • Временные таблицы.
  • Уровни изолированности транзакций.
  • Новые операции изменения типов данных «на лету» при помощи функции CAST.
  • Динамические курсоры.
  • Обратная и будущая совместимость с прочими стандартами SQL.
  • Call Level Interface

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]