Основы языка SQL

В настоящее время SQL (англ. structured query language – язык структурированных запросов) является стандартным реляционным языком БД и поддерживается всеми распространенными реляционными и объектно- реляционными СУБД.

В 1970-х гг. в IBM для проверки возможностей практической реализации реляционной модели данных разрабатывалась экспериментальная СУБД System R. Для нее был создан язык SEQUEL (англ. Structured English QUEry Language). Язык получил достаточно широкую популярность и несколько позже, из-за существования зарегистрированной торговой марки SEQUEL, был переименован в SQL.

Поддержка языка SQL, независимо реализуемая в СУБД ряда производителей, привела к необходимости разработки стандартов этого языка. Разработка спецификации SQL была начата Американским национальным институтом стандартов (ANSI) в 1982 г. Стандарт был принят ANSI в 1986 г. и в 1987 г. одобрен Международной организацией по стандартизации (ISO). Эта версия стандарта SQL обычно обозначается как SQL–86.

Следующая версия выпущена в 1989 г. (SQL–89). В ней, в частности, были четко стандартизованы синтаксис и семантика операторов выборки данных и манипулирования данными, определены средства ограничения целостности БД [15].

Версия стандарта SQL–92, также известная как SQL2, значительно расширила предыдущую версию, определив средства манипулирования схемой БД, управление транзакциями и сессиями, подключения к БД и т.д.

В выпущенную в 1999 г. версию SQL: 1999 (SQL3) добавлена поддержка регулярных выражений, рекурсивных запросов, поддержка триггеров, базовые процедурные расширения, нескалярные типы данных и некоторые объектно-ориентированные возможности.

Последующие версии – SQI-:2003, SQL:2006, SQL:2008 – внесли поддержку данных в формате XML, совместного использования в запросах SQL и языка запросов к XML-данным XQuery (SQL:2006) и ряд других новшеств.

Начиная с SQL:1999 стандарт разбивается на части, каждая из которых оформляется в виде отдельного документа. После утверждения в ISO эти документы выпускаются также в виде стандартов этой организации (серия 9075). Например, вторая часть SQL:2008 выпущена как ISO/IEC 9075-2:2011 Information technology – Database languages – SQL – Part 2: Foundation (SQL/Foundation) ("Информационные технологии. Языки базы данных. Язык структурированных запросов (SQL). Часть 2. Основа").

Язык SQL включает три подъязыка:

  • Data Definition Language (DDL) – язык определения данных, включающий такие операторы, как CREATE, ALTER, DROP;
  • Data Manipulation Language (DML) – язык обработки данных, который позволяет запрашивать и изменять данные и включает операторы SELECT, INSERT, UPDATE, DELETE;
  • Data Control Language (DCL) – язык управления данными, позволяет управлять разрешениями на доступ к данным и включает операторы GRANT и REVOKE.

Следует учитывать, что стандарт SQL может не в полной мере поддерживаться конкретной СУБД. И наоборот, конкретная СУБД может давать возможность использования в SQL-выражениях дополнительных функций, не предусмотренных стандартом. Таким образом, большинство компаний- разработчиков поддерживает собственный диалект языка SQL, который может быть совместим с одной из версий стандарта SQL. Ниже приведен перечень некоторых популярных СУБД и наименования диалектов SQL:

  • • Microsoft SQL Server – Transact-SQL или T-SQL;
  • • Microsoft Access – Jet SQL;
  • • Oracle Database – PL/SQL;
  • • IBM DB2 – SQL PL.

По ходу изложения материала в качестве примеров будут приводиться некоторые расхождения в правилах записи отдельных выражений в стандарте SQL и Transact-SQL. Подобные расхождения есть и у других производителей СУБД.

Используемые в SQL термины отличаются от принятых в реляционной алгебре. В частности, используются названия "таблица", "строка" и "столбец" вместо "отношение", "кортеж", "атрибут". Также необходимо отметить, что результат запроса на SQL может содержать повторяющиеся строки. Это отличает его от результата реляционного выражения, где повторяющихся кортежей быть не может.

 
< Пред   СОДЕРЖАНИЕ     След >