Интернет и базы данных. Часть 05. Язык SQL - структурированный язык запросов

Язык SQL (Structured Query Language - структурированный язык запросов) - это основное средство общения с реляционными базами данных. Более того: для большинства реляционных СУБД использование языка SQL - это единственный способ выборки и модификации информации в базе.

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

Массовое распространение SQL в различных, довольно сильно отличающихся диалектах привело к необходимости его стандартизации. В 1986 году ISO (Международная организация по стандартизации) и ANSI (Американский национальный институт стандартов) опубликовали стандарт SQL 86, который затем дважды - в 1989 и в 1992 годах - пересматривался. Стандарт SQL 92 действует по сей день.

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

Основные принципы языка SQL

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

Язык SQL предназначен только для взаимодействия с базой данных. Средств разработки законченных программ (организации красивых экранных форм, печати отчетов и т.п.) в нем нет.

Составные части языка SQL

Традиционно выделяют две основных части языка SQL (хотя деление это во многом условное):

  • DDL - Data Definition Language - Язык определения данных. DDL включает в себя операторы создания, модификации, удаления объектов (Create, Alter, Drop...). К DDL обычно также относят операторы управления правами пользователей (Grant, Revoke).
  • DML - Data Manipulation Language - Язык манипулирования данными. DML предназначен для ведения (добавления, модификации, удаления) и выборки информации из базы данных. Основные операторы DML - Select, Insert, Update и Delete.

Интерактивный, статический и динамический SQL

Выше уже упоминалось, что средств разработки законченных программ в составе языка SQL нет. Как же его использовать на практике?

  1. Все известные мне СУБД содержат в своем составе утилиты, позволяющие пользователю непосредственно вводить операторы SQL в режиме, скажем так, командной строки, либо запускать на выполнение файлы, содержащие операторы SQL. Получаемая в результате выполнения запросов информация, а также служебные и диагностические сообщения могут быть выведены на экран, в текстовый файл или на принтер. Такой режим называется интерактивный, или автономный, SQL.
  2. Операторы SQL могут быть непосредственно включены в программы на других языках программирования. В настоящее время практически все языки программирования высокого уровня (в частности, C++, Object Pascal (Delphi) и другие) содержат средства подключения к базам данных и выполнения SQL-операторов. Такой режим называется статический SQL.
  3. Операторы SQL могут быть динамически сгенерированы приложением и затем выполнены. Такой режим называется динамический SQL.