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) в любой момент времени в любой транзакции вне оператора определения схемы. Появились операторы уничтожения таблиц (DROP TABLE и 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
Примечания
- ↑ Стандарты языка реляционных баз данных SQL: краткий обзор Архивная копия от 29 декабря 2010 на Wayback Machine (рус.)
- ↑ 1 2 3 Сводка отличий SQL/92 от SQL/89 Архивная копия от 13 декабря 2009 на Wayback Machine (рус.)
Ссылки
- The SQL-92 standard (англ.) (текст стандарта)
- BNF Grammar for ISO/IEC 9075:1992 — Database Language SQL (SQL-92) (англ.)
- Некоторые черты SQL/92 (рус.)
- SQL-92 (Справочное руководство) (рус.)
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.