SQL (язык программирования)
SQL (аббревиатура от англ. Structured Query Language – язык структурированных запросов), декларативный язык программирования для манипулирования данными (описания, модификации и извлечения данных) в реляционных базах данных (БД). Наиболее распространённый язык, применяемым приложениями БД.
Язык SQL разработан компанией IBM в 1970-х гг. для работы с базой данных System R. Изначально назывался SEQUEL. Компания Oracle (ранее Relational Software) стала первым поставщиком, предложившим коммерческую систему управления базами данных (СУБД), поддерживающую работу с SQL.
SQL был принят в качестве стандарта Национальным институтом стандартов США (ANSI) в 1986 г. как SQL-86, затем Международной организацией по стандартизации (ISO) – в 1987 г. Позднее SQL неоднократно изменяли. Известны версии стандарта: SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2006, SQL:2008, SQL:2011, SQL:2016, SQL:2019–2020, SQL:2023.
Реализации SQL от разных производителей не являются последовательными и не всегда полностью соответствуют стандартам. В частности, чувствительность к регистру в синтаксисе даты и времени, конкатенации строк и сравнениях у разных производителей различна. Например, СУБД PostgreSQL преобразует имена без кавычек в нижний регистр, что противоречит стандарту SQL, который гласит, что имена без кавычек должны преобразовываться в верхний регистр. В результате программный код SQL не всегда полностью соответствует стандартам и требует модификации для перенесения между СУБД.
Важные особенности и характеристики языка
Команды (операторы) языка SQL разбиваются на следующие подмножества:
Язык определения данных (англ. Data Definition Language – DDL) – с помощью операторов, входящих в DDL, определяется структура БД и её объекты. Например, оператор CREATE используется для создания объектов БД.
Язык управления данными (англ. Data Manipulation Language – DML) – это операторы по извлечению данных, находящихся в реляционных БД. Так, оператор INSERT используется для создания новой записи в БД.
Язык определения доступа к данным (англ. Data Control Language – DCL) включает в себя операторы, нужные для управления пользовательским доступом к БД. Например, оператор GRANT разрешает определённым приложениям манипулировать таблицами.
Язык управления транзакциями (англ. Transaction Control Language – TCL) используется для автоматического внесения изменений в БД. Например, оператор ROLLBACK отменяет ошибочную транзакцию.
Стандарт SQL определяет следующие типы данных: 1) предопределённые типы данных, которые внутренне поддерживаются реализацией. К ним относятся двоичные типы, точные числовые типы, числовые типы с плавающей запятой, логические значения, XML и JSON; 2) к составным типам относятся ARRAY, MULTISET, REF и ROW; 3) пользовательские типы сравнимы с классами объектного языка программирования со своими собственными конструкторами, методами, наследованием, перегрузкой, перезаписью, интерфейсами и т. д.
К достоинствам языка SQL относятся:
Стандартизированность – использование SQL в программных приложениях стандартизировано международными организациями.
Возможность создания интерактивных запросов: SQL предоставляет пользователям мгновенный доступ к данным, а в интерактивном режиме результаты запроса можно получить за короткое время, не прибегая к написанию сложных программ.
Поддержка клиент-серверной архитектуры: SQL является одним из лучших решений для реализации приложений на архитектуре «клиент – сервер». SQL служит связующим звеном между клиентской системой, взаимодействующей с пользователем, и управляющей БД серверной системой, тем самым позволяя каждой из них сосредоточиться на выполнении соответствующих функций.
Независимость от конкретной СУБД: реляционные СУБД в целом придерживаются той или иной версии стандарта SQL, что позволяет переносить базы данных между различными реляционными СУБД с небольшим количеством специфических для конкретной СУБД изменений.
Реляционная основа языка: SQL является языком реляционных БД, поэтому получил широкое распространение после того, как реляционная модель данных обрела популярность. Табличная структура реляционной БД очень проста, а потому язык SQL легко изучить, хотя в большей степени он является инструментом программиста, чем конечного пользователя БД.
Вместе с тем создатели реляционной модели данных Э. Кодд и К. Дейт указывают на то, что SQL не вполне соответствует реляционной модели данных (The Third Manifesto).