Определение

Structured Query Language (SQL) — язык программирования, предназначенный для извлечения информации и размещения ее в реляционной базе данных. Запросы создаются с помощью командного языка, который позволяет выбирать, добавлять, обновлять и находить данные. SQL — это стандарт, принятый Американским национальным институтом по стандартам (ANSI) и Международной организацией по стандартам (ISO). В некоторых системах управления базами данных поддерживается расширенный вариант SQL с теми или иными частными дополнениями

Основной механизм, используемый для формирования запросов, чтения и обновления реляционных баз данных, представляет собой язык, получивший название Structured Query Language, или SQL. Язык, созданный для того, чтобы задавать вопросы, касающиеся информации, содержащейся в базе данных, не является процедурным, в отличие от традиционных Фортрана, Бейсика, Си или Кобола, с помощью которых пишутся процедуры, выполняющие одну операцию за другой в заранее определенной последовательности до тех пор, пока не будет выполнена поставленная задача. Это может быть линейная процедура, цикл или переход в другую точку или процедуру. В любом случае программист указывает порядок выполнения.

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

SQL отличается многофункциональностью и фундаментальностью, а также способностью поддерживать любые действия, связанные с реляционными базами данных, так что практически любое приложение и инструментарий разработки, вне зависимости от своего интерфейса, в конце концов преобразует запросы и другие команды в SQL.

Таким образом, визуальный инструментарий программирования для разработки приложений, рассчитанный на взаимодействие с базами данных, может иметь удобный, объектно-ориентированный графический интерфейс. Но как только процесс программирования завершен, система преобразует все вызовы и команды базы данных в SQL. Это упрощает интеграцию систем front-office и back-office, особенно в многозвенных клиент-серверных приложениях. Единственное существенное исключение из этого правила связано с объектно-ориентированными базами данных, структура и архитектура которых могут не быть согласованными с реляционными.

Реляционные базы данных

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

История SQL

История SQL началась в 70-х годах в IBM Research Laboratory в Сан-Хосе, где Э. Ф. Кодд и другие сотрудники лаборатории разработали реляционную модель баз данных, на основе которой со временем была создана СУБД DB2. По мере широкого распространения в 80-х реляционных баз данных SQL стал применяться в коммерческих информационных технологиях. В 1986 году Американский национальный институт по стандартам и Международная организация по стандартам утвердили первый стандарт на этот язык.

Примерно в то же время появились клиент-серверные локальные сети, в которых работали приложения нового поколения, требующие новых навыков программирования. С помощью SQL и сетевого соединения многочисленные клиентские приложения могли получать доступ к центральной базе данных, размещенной на удаленном сервере.

В середине 80-х годов компании Oracle и Sybase выпустили первые коммерческие системы управления базами данных, которые использовали язык SQL в качестве основного механизма формирования запросов. Спустя некоторое время Microsoft быстро лицензировала технологию Sybase в качестве основы для своего Microsoft SQL Server. Большинство этих продуктов также содержали внутренние библиотеки инструментальных средств, которые разработчики могли применять для того, чтобы заставить приложения работать с базой данных, а также драйверы для поддержки взаимодействия между узлами локальной сети. Все это придавало продуктам необходимую гибкость и масштабируемость.

В 1989 и 1992 годах в стандарт были добавлены функции базового контроля целостности данных, администрирования данных, а также определения и манипуляций с данными. Примерно в это же время в дополняющей стандарт спецификации Open Database Connectivity (ODBC) был описан прикладной программный интерфейс, с помощью которого программное обеспечение могло связываться с другой системой баз данных, совместимой с ODBC. Несколькими годами позже была подготовлена аналогичная спецификация, получившая название Java Database Connectivity, которая определила, как операторы SQL можно преобразовать в программы на Java.

Спецификация SQL в редакции 1992 года стала самой популярной, хотя новая версия — SQL3 (также называемая SQL-99) используется уже несколько лет. Процесс стандартизации SQL3 позволил значительно усовершенствовать язык, дав возможность использовать его со сложными объектами в объектных базах данных. Это значит, что SQL3 должен включать в себя обобщенные и специализированные иерархии, множественное наследование, типы данных, определенные пользователями, переключатели и утверждения, поддержку систем баз знаний, рекурсивные выражения запросов и так далее.

Кроме того, он должен поддерживать все отличительные особенности объектно-ориентированного программирования, в том числе абстрактные типы данных, методы, наследование, полиморфизм и инкапсуляцию.


Пример использования SQL

Рассмотрим очень простую базу данных, состоящую всего из одной таблицы, называющейся Сотрудники

ИмяВозрастДолжностьЗарплата
Энди Эппл28программист40 000 долл.
Бренда Беннетт40менеджер50 000 долл.
Кери Чарлз29администратор35 000 долл.
Дейв Дункан50директор120 000 долл.
Элиз Энтерман36вице-президент60 000 долл.
Френк Фиш46менеджер52 000 долл.

Теперь создадим запрос на поиск имен и должностей сотрудников в возрасте 40 лет и старше, которые зарабатывают по крайней мере 50 тыс. долл. SQL-оператор может выглядеть следующим образом.

Результат:

«Бренда Беннетт, менеджер; Дейв Дункан, директор; Френк Фиш, менеджер». Это очень простой пример. На самом деле они могут быть достаточно сложными и запутанными, в тех случаях когда используется множество таблиц и взаимосвязей и приходится создавать нетривиальные булевы выражения.