Введение в стандарты языка баз данных SQL

       

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


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

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

  • средства определения схемы БД и манипулирования схемой;
  • операторы для определения ограничений целостности и триггеров;
  • средства определения представлений БД;
  • средства авторизации доступа к отношениям и их полям;
  • средства управления транзакциями.

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

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

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

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



Содержание раздела