Лекция №1: Стандарты языка sql
Вид материала | Лекция |
- Задачи курса Основы языка sql (и его расширения, t-sql, используемого sql server 2000), 22.95kb.
- Отчёт по курсовой работе на тему «Лабораторный практикум по изучению языка структурированных, 1960.59kb.
- Бобровски С. Oracle7 и вычисления клиент/сервер, 1004.32kb.
- Тема «Введение в язык sql», 148.85kb.
- Уважаемые пользователи босс-кадровик на платформе Microsoft, 34.05kb.
- Установка sql express 2005, 24.56kb.
- Здопомогою мови sql можна створювати запити до реляційних баз даних (таких як Access),, 276.28kb.
- Программа курса: Модуль Краткий обзор sql server Что такое сервер sql server Интегрирование, 35.73kb.
- Курс лекций "Базы данных и субд" Логинова С. А. Лекция 13. Язык sql. Команды dml. Команды, 133.93kb.
- Курс 2778. Создание запросов на языке Microsoft sql server 2005 Transact-sql. Курс, 16.57kb.
Лекция №1: Стандарты языка SQL
Стандарты языка SQL
Язык SQL предназначен для доступа к информации и управления реляционной базой данных. Управление различными реляционными базами данных осуществляют программы, называемые СУБД - системы управления базами данных (DBMS - Database Management System). Сама реляционная база данных представляет собой хранилище определенным образом организованной информации и СУБД. Однако на практике термин СУБД часто заменяют термином БД (база данных). Для того чтобы c различными базами данных, такими как Oracle, Microsoft SQL Server, Informix, DB2, Access, MySQL - можно было общаться на одном языке, был разработан язык SQL.
Начиная с 1986 года комитеты ISO (International Organization for Standardization) и ANSI (American National Standards Institute) приступили к созданию ряда стандартов языка SQL, которые впоследствии были приняты и получили следующие названия: SQL86, SQL89, SQL92 и SQL99.
Стандарт SQL86 зафиксировал минимальный стандартный синтаксис языка SQL.
Стандарт SQL89 был принят в 1989 году. Он вводил набор операторов языка SQL, которые должны были реализовывать все СУБД, заявляющие поддержку стандарта SQL89. На практике каждая реальная коммерческая СУБД предоставляет значительно более широкий набор возможностей, чем предусмотрено стандартом. Так, несмотря на то, что большинство СУБД на момент принятия стандарта уже поддерживали встроенный и динамический SQL, в стандарте SQL89 правила встраивания языка SQL в процедурный язык программирования (такой как язык С) и правила использования динамического SQL прописаны не были.
До последнего времени большинство СУБД поддерживали стандарт SQL92.
В стандарте SQL92 было определено три уровня соответствия:
- основной (Entry);
- средний (Intermediate);
- полный (Full).
При этом, для того чтобы объявить СУБД поддерживающей стандарт SQL92, большинство производителей реализовывали только основной уровень соответствия.
Новый стандарт SQL99, при разработке именовавшийся как SQL3, стандартизировал объектные расширения языка SQL и некоторые процедурные расширения языка SQL. К моменту принятия этого стандарта большинство коммерческих СУБД, таких как Oracle, уже де-факто ввели использование объектных типов и наследования.
В стандарте SQL99 определено обязательное функциональное ядро (Core) и набор уровней расширенного соответствия. Функциональное ядро SQL99 включает в себя основной уровень соответствия SQL92. Уровни расширенного соответствия не являются обязательными для реализации в СУБД, претендующей на поддержку стандарта SQL99. СУБД может не поддерживать ни одного уровня расширенного соответствия или поддерживать любые из них.
Каждый уровень описывает набор возможностей языка SQL, которые должны поддерживать реализации СУБД, претендующие на данный уровень соответствия.
При этом объявлено, что стандарт SQL99 является открытым для всех последующих уровней расширенного соответствия, которые могут появиться в дальнейшем.
В настоящий момент стандарт SQL99 содержит следующие уровни соответствия:
- Функциональное ядро
Данный уровень является обязательным для любой реализации СУБД. Он включает в себя основной уровень соответствия SQL92, а также поддержку работы с LOB-объектами (Large Object), вызов из SQL внешних программ, написанных на других языках программирования, и простые типы данных, определяемые пользователем (UTD-типы, User-Defined Datatypes). Вводится поддержка LOB-объектов двух типов: бинарных BLOB-объектов (Binary Large Object) и символьных CLOB-объектов (Character Large Object). Для доступа к LOB-объектам вводятся объекты, называемые локаторами. Локаторы описываются целочисленными переменными, реализующими доступ к LOB-объекту по ссылке. Внешние программы определяются как объекты схемы, так же, как и таблицы. В зависимости от реализации сам код внешней программы может находиться в DLL-библиотеке или в произвольном файле, а внешняя программа создается оператором языка CREATE PROCEDURE или CREATE FUNCTION с обязательным указанием фраз LANGUAGE и EXTERNAL. Следует отметить, что хотя использование внешних программ входит в функциональное ядро, но поддержка вызова процедур и функций SQL относится к расширенному уровню соответствия "PSM-модули" (Persistent Stored Module). Определяемые пользователем типы данных могут быть простыми и структурированными. Второй случай относится к уровню соответствия "Базовая поддержка объектов". Простой тип данных, определяемый пользователем, - это существующий тип данных, для которого определено новое имя и возможно некоторое ограничение по количеству символов или цифр. Простой тип данных, определяемый пользователем, создается оператором CREATE TYPE (например, CREATE TYPE name_of_new_type AS INTEGER (5) FINAL; ).
- Поддержка работы с датой/временем
Этот уровень соответствия вводит типы данных DATETIME и INTERVAL, а для типа DATETIME вводит поля TIMEZONE_HOUR и TIMEZONE_MINUTE, определяющие смещение для зонального времени относительно универсального времени. В стандарте SQL92 полного уровня соответствия типы данных DATETIME и INTERVAL уже были специфицированы.
- Управление целостностью
Этот уровень соответствия вводит поддержку дополнительных возможностей ссылочной целостности: подзапросы в ограничениях целостности CHECK оператора CREATE TABLE, триггеры, утверждения, создаваемые оператором CREATE ASSERTION. Большинство из этих возможностей входило в стандарт SQL92.
- Активные базы данных
На этом уровне соответствия определяется поддержка триггеров базы данных, хранимых в базе данных и выполняемых. Триггеры представляют собой фрагменты кода, выполняемые перед или после указанного изменения данных (такого как, вставка строки, удаление или изменение строки).
- OLAP
Этот уровень соответствия определяет средства описания более сложных запросов. Так, в оператор SELECT включена фраза INTERSECT, позволяющая получать пересечения множеств, выданных несколькими запросами. В стандарте SQL92 эта возможность прописывалась только для полного уровня соответствия. В оператор SELECT включена фраза FULL OUTER JOIN, предназначенная для создания полных внешних соединений таблиц. Такое соединение будет содержать все строки из объединяемых таблиц, в которых при отсутствии совпадений проставляются NULL-значения. Подобная возможность была предусмотрена и в полном уровне соответствия стандарта SQL92. В операторах языка 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 введено использование переменных и применение обработчиков ошибок.
- 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.
Стандартизация управления и обмена данными.Международная организация стандартизации ISO в рамках 32 подкомитета JTC1 ("Data Management and Interchange") разрабатывает стандарты в области управления и обмена данными для локальных и распределенных информационных систем. В круг вопросов, обсуждаемых SC32, входит рассмотрение моделей взаимодействия для существующих и появляющихся стандартов; определение структур и типов данных, семантики применения этих структур и типов; описание стандартов для языков, сервисов и протоколов, используемых для параллельного доступа и изменения данных, для обмена данными, а также для реализации хранения данных; стандартов на методы, языки, сервисы и протоколы, употребляемых для структурирования, организации и регистрации метаданных, а также других информационных ресурсов. В рамках SC32 функционирует ряд рабочих групп:
В последнее время для обмена данными и представления информации все чаще используется язык XML (eXtensible Markup Language). Этот язык не привязан к какой-либо конкретной платформе или к конкретному производителю. Первая спецификация языка XML 1.0 получила статус рекомендации консорциума W3C в 1998 г. Далее консорциум W3C разработал и опубликовал ряд стандартов, связанных с XML (Extensible Markup Language (XML) Version 1.0 (second edition): ссылка скрыта), включая стандарт на механизм связывания XLink и XPointer, стандарт синтаксиса схемы, описывающей набор данных (Recommendation) XML Schema Part 1: Structures, 2 May, 2001, (Recommendation) XML Schema Part 2: Datatypes, 2 May, 2001: ссылка скрыта, ссылка скрыта), спецификации по определению и использованию пространства имен (Namespaces in XML, 14 January, 1999: ссылка скрыта). Консорциум W3C, продолжая работу над стандартизацией XML, опубликовал рекомендации по DOM XML - объектной модели документа, представляющей XML-документ в виде объекта. Вопросами стандартизации XML также частично занимается OASIS (организация по продвижению стандартов структурирования информации - Organization for the Advancement of Structured Information Standards: ссылка скрыта). Инженерной группой IETF был разработан стандарт SOAP (Simple Object Access Protocol), использующий язык XML, как язык для обмена данными. Фактически SOAP позволяет посредством применения XML реализовывать межплатформенный доступ к данным, связывая воедино применение таких технологий, как CORBA, EJB и COM. Разрабатываемый в настоящее время консорциумом W3C стандарт XQL (XML Query Language: ссылка скрыта) включает вопросы, связанные со спецификацией методов выполнения запросов к набору XML-документов. В рамках WG3 32 подкомитета JTC1 также разрабатывается стандарт, связанный с использованием языка XML: "ИТ - Язык SQL - часть 14: Спецификация SQL/XML" ( Information technology - Database languages - SQL - Part 14: XML-Related Specifications (SQL/XML)). Разрабатываемый стандарт рассматривает механизмы преобразования данных, описываемых средствами языка SQL, в данные, представляемые языком XML, и обратно, включая алгоритмы соответствия SQL-таблиц типам данных XML-схемы, соответствия SQL-значений значениям XML, а также приводит описание XML-схемы для SQL/XML. По этому стандарту опубликован Final Committee Draft ISO/IEC FCD 9075-14. Одним из наиболее значительных стандартов, разрабатываемых в настоящее время и предназначаемых для обмена данными, является стандарт ISO/IEC WD 9579, Fourth Edition "ИТ - удаленный доступ к базам данных для SQL" (Information Technology - Remote Database Access for SQL with Extended Security). Рассматриваемый стандартRDA/SQL базируется на уже существующих следующих стандартах IETF (ссылка скрыта):
RDA/SQL может быть использован для реализации удаленного доступа к СУБД, соответствующей стандарту ISO/IEC 9075 (Database Language SQL). Стандарт RDA/SQL описывает модель для удаленного взаимодействия SQL-клиента с одним или несколькими SQL-серверами посредством коммуникационных протоколов. RDA/SQL устанавливает соответствие RDA-протокола стандартным протоколам TCP/IP и TLS (Transport Layer Security), вводит понятия RDA-сообщения, RDA-оператора, RDA-протокола и RDA-передачи. В стандарте определяется RDA-модель среды SQL (рис 1.1.) и функциональные компоненты, составляющие среду RDA-клиента и среду RDA-сервера. Рис. 1.1. RDA-модель среды SQL RDA-модель определяет провайдера транспортного уровня, реализующего взаимодействие между RDA-клиентом и RDA-сервером. Стандарт ISO/IEC 9075-3 (SQL/CLI) описывает результирующий набор, определяемый на стороне сервера, а стандарт RDA/SQL описывает RDA-операторы, предназначаемые для взаимодействия с результирующим набором и соответствующие вызовам SQL/CLI. Наряду с RDA-операторами данный стандарт вводит коды атрибутов, используемые RDA. К настоящему времени рабочей группой WR5 опубликована 4 редакция разрабатываемого стандарта RDA/SQL. |
|