История SQL начинается с начала 1970 годов, когда в исследовательской лаборатории ИБМ в штате Калифорния была разработана его первая версия. Его название является аббревиатурой от Structured Query Language (структурированный язык запросов) и иногда его произносят как "sequel" (первоначальное название). Сначала он был реализован в реляционной СУБД DB2 фирмы ИБМ. SQL является непроцедурным в отличии от процедурных языков третьего поколения (third-generation languages -3GL), таких как COBOL и C, которые появились в это же время. Отметим, что непроцедурность языка означает, что в нем формулируется что надо получить, а не как это сделать.
Специфической особенностью реляционных систем управления базами данных (РСУБД) является то, что они предоставляют язык манипулирования базами данных, который ориентируется на множества (set-oriented database language). Для подавляющего большинства современных СУБД таким языком является SQL.
Две организации - Американский Национальный Институт Стандартов - АНСИ (American National Standards Institute - ANSI) и Международная Организация Стандартов - ИСО (International Standards Organization - ISO) занимаются описанием и поддержанием стандартов этого языка. Не смотря на то, что все современные СУБД поддерживают тот или иной стандарт, однако в каждом конкретном случае допускаются отклонения, которые всегда специфицируются в документации. Более того, большинство систем предлагают расширения этого языка, которые допускают возможность его использования в других процедурных языках. Мы в общих чертах обсудим эти расширения (PL/SQL, Transac-SQL).
Не смотря на то, что язык называется языком запросов, он предоставляет следующие возможности:
· определять, переопределять и удалять таблицы базы данных,
· вставлять, изменять и удалять строки в таблицах,
· проводить поиск данных во многих таблицах и упорядочивать результаты поиска,
· описывать процедуры поддержания целостности,
· определять и изменять информацию о защите данных.
Суть языка будет раскрываться в данных лекциях на многочисленных примерах его использования. За основу изложения принят стандарт ANSI-92. Все запросы будут формулироваться по отношению к схеме базы данных, приведенной в разделе 4.6.3, а именно:
FACULTY (#F, Name, Dean, Building, Fund ) SUBJECT (#S, Name)