Тема 6: язык запросов SQL. История, стандарты, терминология. Субд 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема 6: язык запросов SQL. История, стандарты, терминология. Субд



Введение

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

Очень важным требованием к реляционным СУБД является наличие мощного и в тоже время простого языка, позволяющего выполнять все необходимые пользователям операции. Таким повсеместно принятым языком стал язык реляционных БД SQL (Structured Query Language, Язык Структурных/Структурированных Запросов).

До появления SQL в СУБД (независимо от того, на какой модели они основывались) приходилось поддерживать, по крайней мере, три языка, которые обычно имели мало общего:

· язык определения данных (ЯОД), служащий для спецификации структур БД (обычно общую структуру БД называют схемой БД);

· язык манипулирования данными (ЯМД), позволяющий создавать прикладные программы, взаимодействующие с БД;

· язык администрирования БД (ЯАБД), с помощью которого можно было выполнять служебные действия (например, изменять структуру БД или производить ее настройку с целью повышения эффективности).

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

Следует отметить, что к достоинствам языка SQL относится наличие международных стандартов. Первый международный стандарт был принят в 1989 г., и соответствующая версия языка называется SQL-89. Этот стандарт поддерживается практически во всех современных коммерческих реляционных СУБД (например, в Informix, Sybase, Ingres и т.д.). Второй международный стандарт был принят в 1992 г. - SQL-92. Этот вариант языка существенно шире, чем SQL-89. К настоящему времени основные компании-производители СУБД только частично поддерживают этот стандарт. Тем не менее, он является исключительно важным документом как для реально практикующих разработчиков программного обеспечения, так и для специалистов, связанных с подбором аппаратно-программных средств.

История языка SQL

История наиболее распространенного в настоящее время языка реляционных баз данных SQL насчитывает уже более 25 лет. Первый, достаточно полный функционально, но не полностью синтаксически и семантически определенный вариант языка SQL (его исходным названием было SEQUEL – Structured English Query Language) был разработан и частично реализован в рамках проекта экспериментальной реляционной СУБД System R (проект выполнялся с 1974 по 1979 гг. в научно-исследовательской лаборатории компании IBM в г.Сан-Хосе, Калифорния).

Название языка SQL (Structured Query Language - структурированный язык запросов) только частично отражает его суть. Конечно, язык всегда был главным образом ориентирован на удобную и понятную пользователям формулировку запросов к реляционной БД, но на самом деле с самого начала задумывался как полный язык БД. Под этим мы понимаем то, что (по крайней мере, теоретически) знание SQL полностью достаточно для выполнения любых осмысленных действий с базой данных, управляемой SQL-ориентированной СУБД. Помимо операторов формулирования запросов и манипулирования БД язык содержит:

средства определения схемы БД и манипулирования схемой;

операторы для определения ограничений целостности и триггеров;

средства определения представлений БД;

средства авторизации доступа к отношениям и их полям;

средства управления транзакциями.

Другими словами, язык SQL претендует на то, что он способен полностью представить реляционную модель данных, т.е. его средств достаточно для представления всех аспектов реляционных баз данных в терминах Кодда. (Сразу заметим, что с этим утверждением многие несогласны, полагая, что некоторые возможности SQL расширяют классическую реляционную модель, а некоторые другие возможности - ее ограничивают.)

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

Но на самом деле то же относится и к разным реализациям языков программирования (сравните, например, реализационные диалекты языка Си компиляторов Borland и GCC). Важно другое. Существует международный стандарт языка Си (ANSI/ISOC), который должен поддерживаться в любом компиляторе, претендующем на совместимость со стандартом (хотя реализационный диалект языка может содержать существенные расширения). Именно наличие стандарта языка Си в совокупности с другими стандартами Открытых Систем обеспечивает возможность создания легко переносимых прикладных (и иногда и системных) программ.

После появления в 1989 г. первого международного стандарта языка SQL (SQL-89) и, в особенности, после принятия в 1992 г. второго международного стандарта SQL-92 стало возможным говорить про стандартную среду SQL-ориентированной СУБД. Для грамотного использования любой SQL-ориентированной реляционной СУБД знание стандартов языка кажется необходимым.

Этапы стандартизации SQL

Работа по стандартизации языка SQL началась практически одновременно с появлением первых его коммерческих реализаций. В качестве стандарта нельзя было использовать SQL System R. Этот вариант языка не был должным образом технически проработан и, кроме того, его слишком сложно было бы реализовать. С другой стороны, первые коммерческие реализации языка настолько различались, что ни один из реализованных диалектов не имел шансов быть принятым в качестве стандарта. В частности, это относится и к первому корпоративному стандарту языка, принятому компанией IBM.

Принятый в 1989 г. [ISO89] Международный Стандарт SQL (SQL/89) во многих частях имеет чрезвычайно общий характер и допускает очень широкое толкование. В этом стандарте полностью отсутствуют такие разделы как манипулирование схемой БД и динамический SQL. Многие существенные аспекты языка в соответствии со стандартом определяются в реализации.

Поэтому на фоне завершения разработки этого стандарта была начата работа над стандартом SQL2. Она также длилась несколько лет, пока, наконец, в марте 1992г. не был выработан окончательный проект стандарта [ISO92] (теперь его принято называть SQL/92). Этот стандарт существенно более полный и охватывает практически все необходимые для реализации аспекты: манипулирование схемой БД, управление транзакциями и сессиями (сессия - это последовательность транзакций, в пределах которой сохраняются временные отношения), подключение к БД, динамический SQL. Cтандартизованы также отношения-каталоги БД, которые хотя и не связаны с языком непосредственно, но сильно влияют на реализацию.

Одновременно с завершением работ по определению стандарта SQL2 была начата разработка стандарта SQL3.



Поделиться:


Последнее изменение этой страницы: 2016-12-27; просмотров: 238; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.81.240 (0.005 с.)