Общая характеристика и стандарты языка SQL

 

Язык SQL (Structered Query Language) впервые появился в рамках проекта разработки экспериментальной реляционной СУБД System R в исследовательской лаборатории фирмы IBM в 1975-1979 г.г. Эта работа оказала революционизирующее влияние на развитие теории и практики реляционных систем во всем мире. Именно System R практически доказала жизнеспособность реляционного подхода к управлению базами данных.

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

Основными функциями SQL являются:

· организация данных;

· реализация запросов данных по заданным условиям;

· корректировка данных;

· управление доступом к данным;

· организация параллельного использования данных;

· обеспечение целостности данных.

Язык SQL, точнее определенный диалект SQL, является частью СУБД и не может поставляться отдельно. В языке отсутствуют операторы IF, GOTO, FOR. Впрочем, диалекты SQL в коммерческих СУБД, такие как Transact SQL в СУБД SQL Server, могут включать и эти операторы.

Язык SQL может применяться как в интерактивном, так и программном режимах.

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

В программном режиме операторы SQL реализуются либо библиотекой интерфейса программирования приложений (API – application program interface), либо являются операторами некоторого включающего языка. В последнем случае операторы SQL могут напрямую распознаваться транслятором или же обрабатываться препроцессором и заменяться вызовами соответствующих функций.

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

Основными достоинствами SQL являются:

· широкая распространенность;

· относительно простая переносимость SQL-приложений с одной вычислительной системы на другую;

· наличие признанных стандартов;

· поддержка ведущих компаний;

· ориентация на реляционные СУБД;

· высокоуровневость языка;

· декларативность;

· поддержка архитектуры клиент-сервер;

· возможность динамического изменения структуры данных;

· возможность работы с представлениями данных (View), обеспечивающими защиту данных и их отображение в различных разрезах.

Первые стандарты SQL относятся к 1986 г. В 1989 г. был утвержден первый международный стандарт. В 1992 г. появился стандарт SQL92 или SQL2, который в настоящее время получил наибольшее распространение и поддержку в коммерческих СУБД. В 1999 и 2003 г.г. вышли следующие стандарты, закрепляющие некоторые уже реализованные элементы (например, триггеры) и определяющие перспективы развития языка (в первую очередь – объектная ориентация).

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

Основой языка являются около 20 операторов, имеющих наглядную структуру (в первую очередь для англоязычных пользователей). Можно разделить операторы SQL по их функциям на такие группы, как:

· обработка данных (SELECT, INSERT, DELETE, UPDATE) - эта часть языка часто обозначается абревиатурой DML (Data Manipulation Languge);

· определение данных (CREATE, DROP, ALTER);

· управление доступом (GRANT, REVOKE);

· управление транзакциями (COMMIT, ROLLBACK);

· динамический SQL (DECLARE, OPEN, FETCH, CLOSE, DESCRIBE, PREPARE, EXECUTE).