Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Стандарты





Язык SQL был разработан в начале 1970-х годов в одной из исследовательских лабораторий компании IBM для экспериментальной реляционной СУБД IBM System R.

Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Собственно разработкой языка запросов занимались Дональд Чэмбэрлин (Donald D. Chamberlin) и Рэй Бойс (Ray Boyce). Пэт Селинджер (Pat Selinger) занималась разработкой стоимостного оптимизатора (cost-based optimizer), Рэймонд Лори (Raymond Lorie) занимался компилятором запросов.

Стоит отметить, что SQL был не единственным языком подобного назначения. В Калифорнийском Университете Беркли была разработана некоммерческая СУБД Ingres (являвшаяся прародителем популярной сейчас некоммерческой СУБД PostgreSQL), которая являлась реляционной СУБД, но использовала свой собственный язык QUEL, который, однако, не выдержал конкуренции по количеству поддерживающих его СУБД с языком SQL.

Первыми СУБД, поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX от компании Relational Software Inc. (впоследствии ставшей компанией Oracle) и System/38 от IBM, основанная на System R.

Начиная с 1986 года, комитеты ISO (International Organization for Standardization) и ANSI (American National Standards Institute) приступили к созданию ряда стандартов языка SQL, которые впоследствии были приняты и получили следующие названия: SQL86, SQL89, SQL92, SQL99, SQL2003 и SQL2008.

Стандарт SQL86 зафиксировал минимальный стандартный синтаксис языка SQL.

Стандарт SQL99, при разработке именовавшийся как SQL3, стандартизировал объектные расширения языка SQL и некоторые процедурные расширения языка SQL. К моменту принятия этого стандарта большинство коммерческих СУБД, таких как Oracle, уже де-факто ввели использование объектных типов и наследования.

В стандарте SQL99 определено обязательное функциональное ядро (Core) и набор уровней расширенного соответствия. Функциональное ядро SQL99 включает в себя основной уровень соответствия SQL92. Уровни расширенного соответствия не являются обязательными для реализации в СУБД, претендующей на поддержку стандарта SQL99. СУБД может не поддерживать ни одного уровня расширенного соответствия или поддерживать любые из них.

Каждый уровень описывает набор возможностей языка SQL, которые должны поддерживать реализации СУБД, претендующие на данный уровень соответствия.

Стандарт SQL99 содержит следующие уровни соответствия:

· Функциональное ядро.

Данный уровень является обязательным для любой реализации СУБД. Он включает в себя основной уровень соответствия SQL92, а также поддержку работы с LOB-объектами (Large Object), вызов из SQL внешних программ, написанных на других языках программирования, и простые типы данных, определяемые пользователем (UDT-типы, User-Defined Datatypes). Вводится поддержка LOB-объектов двух типов: бинарных BLOB-объектов (Binary Large Object) и символьных CLOB-объектов (Character Large Object). Внешние программы определяются как объекты схемы, так же, как и таблицы. Следует отметить, что хотя использование внешних программ входит в функциональное ядро, но поддержка вызова процедур и функций SQL относится к расширенному уровню соответствия "PSM-модули" (Persistent Stored Module). Определяемые пользователем типы данных могут быть простыми и структурированными. Второй случай относится к уровню соответствия "Базовая поддержка объектов". Простой тип данных, определяемый пользователем - это существующий тип данных, для которого определено новое имя и возможно некоторое ограничение по количеству символов или цифр.

· Поддержка работы с датой/временем.

Этот уровень соответствия вводит типы данных DATETIME и INTERVAL, а для типа DATETIME вводит поля TIMEZONE_HOUR и TIMEZONE_MINUTE, определяющие смещение для зонального времени относительно универсального времени. В стандарте SQL92 полного уровня соответствия типы данных DATETIME и INTERVAL уже были специфицированы.

· Управление целостностью.

Этот уровень соответствия вводит поддержку дополнительных возможностей ссылочной целостности: подзапросы в ограничениях целостности CHECK оператора CREATE TABLE, триггеры. Большинство из этих возможностей входило в стандарт SQL92.

· Активные базы данных.

На этом уровне соответствия определяется поддержка триггеров базы данных, хранимых в базе данных и выполняемых. Триггеры представляют собой фрагменты кода, выполняемые перед или после указанного изменения данных (такого как вставка строки, удаление или изменение строки).


· OLAP.

Этот уровень соответствия определяет средства описания более сложных запросов. Так, в оператор SELECT включена фраза INTERSECT, позволяющая получать пересечения множеств, выданных несколькими запросами. В оператор SELECT включена фраза FULL OUTER JOIN, предназначенная для создания полных внешних соединений таблиц. В операторах языка SQL, применяемых для манипулирования данными, определяется поддержка использования конструкторов значений строк и таблиц. Конструкторы значений строк состоят из одного или нескольких выражений (например, (NULL, 1, 'Field1')). Конструкторы значений таблиц представляют собой набор значений конструкторов строк, описывающий группу строк (например, VALUES (1, 'A'), (2, 'B')).

· PSM-модули.

Стандарт для процедурных расширений. Этот уровень соответствия полностью описан в документе SQL/PSM стандарта SQL99. Так, язык SQL расширяется операторами управления CASE, IF, WHILE, REPEAT, LOOP и FOR. Вводится поддержка процедур и функций, создаваемых операторами CREATE PROCEDURE и CREATE FUNCTION. В язык SQL введено использование переменных и применение обработчиков ошибок.

Перечень процедурных расширений для самых популярных СУБД приведён в следующей таблице:

СУБД Краткое название Расшифровка
InterBase/Firebird PSQL Procedural SQL
IBM DB2 SQL PL (англ.) SQL Procedural Language (расширяет SQL/PSM); также в DB2 хранимые процедуры могут писаться на обычных языках программирования: Си, Java и т. д.
MS SQL Server/ Transact-SQL Transact-SQL
MySQL SQL/PSM SQL/Persistent Stored Module (соответствует стандарту SQL:2003
Oracle PL/SQL Procedural Language/SQL (основан на языке Ada)
PostgreSQL PL/pgSQL Procedural Language/PostgreSQL Structured Query Language (очень похож на Oracle PL/SQL)

 

· CLI-интерфейс.

Этот уровень соответствия вводит поддержку интерфейса уровня вызова, определяющего вызов операторов SQL. В свое время на базе CLI-интерфейса был разработан стандарт ODBC.

· Базовая поддержка объектов (Basic Object Support).

Этот уровень соответствия стандартизирует использование объектов, вводя поддержку объектных типов данных, определяемых пользователем, применение типизированных таблиц (таблиц на базе объектных типов), использование массивов и ссылочных типов данных, а также переопределение внешних процедур.

· Расширенная поддержка объектов (Enhanced Object Support).

Этот уровень соответствия включает все возможности, предоставляемые уровнем базовой поддержки объектов, дополняя их поддержкой множественного наследования для типов данных, определяемых пользователем.

Представленные выше уровни расширенного соответствия напрямую не связаны с документами, соответствующими разделам стандарта. Стандарт SQL99 содержит следующие основные разделы:

  • SQLFramework - описывает логические основы стандарта.
  • SQLFoundation - определяет содержание каждого раздела стандарта и описывает функциональное ядро стандарта (Core SQL99).
  • SQL/CLI - описывает интерфейс уровня вызова.
  • SQL/PSM - определяет процедурные расширения языка SQL.
  • SQL/Bindings - определяет механизм взаимодействия языка SQL с другими языками программирования.
  • SQL/MM - описываются средства языка SQL, предназначенные для работы с мультимедийными данными.
  • SQL/OLB - определяет связь SQL с объектными языками, описывая 0-часть стандарта SQLJ для встраивания операторов SQL в язык Java

В конце 2003 г. был принят и опубликован новый вариант международного стандарта. Прежде всего, претерпела некоторые изменения общая организация стандарта. Стандарт SQL:2003 состоит из следующих частей:


9075-1, SQL/Framework; 9075-2, SQL/Foundation;

9075-3, SQL/CLI; 9075-4, SQL/PSM;

9075-9, SQL/MED; 9075-10, SQL/OLB;

9075-11, SQL/Schemata; 9075-13, SQL/JRT;

9075-14, SQL/XML.

Части 1-4 и 9-10 с необходимыми изменениями остались такими же, как и в SQL:1999. Часть 5 (SQL/Bindings) больше не существует; соответствующие спецификации включены в часть 2. Раздел части 2 SQL:1999, посвященный информационной схеме, выделен в отдельную часть 11. Появились две новые части – 13 и 14. Часть 13 полностью называется “SQL Routines and Types Using the Java Programming Language” (“Использование подпрограмм и типов SQL в языке программирования Java”). Появление такой отдельной части стандарта оправдано повышенным вниманием к языку Java со стороны ведущих производителей SQL-ориентированных СУБД. Наконец, последняя часть SQL:2003 посвящена спецификациями языковых средств, позволяющих работать с XML-документами в среде SQL. Наиболее серьезные изменения языка SQL, специфицированные в части 2 стандарта SQL:2003, касаются следующих аспектов: типы данных; подпрограммы, вызываемые из SQL; расширенные возможности оператора CREATE TABLE; новый объект схемы – генератор последовательностей; новые виды столбцов – идентифицирующие столбцы (identity colum n) и генерируемые столбцы (generated column); новый оператор MERGE;

История версий стандарта:

Год Название Иное название Изменения
  SQL-86 SQL-87 Первый вариант стандарта, принятый институтом ANSI и одобренный ISO в 1987 году.
  SQL-89 FIPS 127-1 Немного доработанный вариант предыдущего стандарта.
  SQL-92 SQL2, FIPS 127-2 Значительные изменения (ISO 9075); уровень Entry Level стандарта SQL-92 был принят как стандарт FIPS 127-2.
  SQL:1999 SQL3 Добавлена поддержка регулярных выражений, рекурсивных запросов, поддержка триггеров, базовые процедурные расширения, нескалярные типы данных и некоторые объектно-ориентированные возможности.
  SQL:2003   Введены расширения для работы с XML-данными, оконные функции (применяемые для работы с OLAP-базами данных), генераторы последовательностей и основанные на них типы данных.
  SQL:2006   Функциональность работы с XML-данными значительно расширена. Появилась возможность совместно использовать в запросах SQL и XQuery.
  SQL:2008   Улучшены возможности оконных функций, устранены некоторые неоднозначности стандарта SQL:2003






Date: 2015-09-18; view: 404; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.01 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию