Изначально создаваемый как инструмент для выборки и представления данных, содержащихся в базе данных, SQLсегодня представляет собой нечто гораздо большее. Несмотря на то, что выборка данных по-прежнему остается одной н а наиболее важных функций SQL,сейчас этот язык используется для реализации всех функциональных возможностей, необходимых для управления БД, в том числе и для:
• организации данных — SQLпозволяет определять и изменять структуру представления данных, а также устанавливать отношения;
• обработки данных — SQLпозволяет изменять содержимое базы данных: добавлять новые данные, удалять или обновлять уже имеющиеся в ней данные;
• управления доступом — SQLпозволяет ограничивать возможности пользователя по чтению и изменению данных (защита данных от несанкционированного доступа) и координировать их совместное использование пользователями, работающими параллельно.
Таким образом, хотя SQLи не объявляется полноценным языком программирования, он является достаточно полным и мощным языком для управления взаимодействием с СУБД. SQLявляется подъязыком баз данных, предназначенным для управления базами данных. Несмотря на не совсем точное название, SQLна сегодняшний день является единственным стандартным языком для работы с реляционными базами данных.
|
|
Операторы SQL встраиваются в базовый язык, например PASCAL, FORTRANили С, и дают возможность получать доступ к базам данных из прикладных программ. Кроме того, из многих языков программирования операторы ЯЯ можно посылать СУБДв явном виде, используя интерфейс вызовов функций.
Официальный стандарт языка ЯЯ был опубликован в 1986 г. Американским институтом национальных стандартов (ANSI)и Международной организацией по стандартам (International Standards Organization — ISO),а в 1992 г. значительно расширен. Стандарт Х/OPEN для переносимой среды программирования на основе операционной системы UNIXтакже включает в себя SQLв качестве языка для доступа к базам данных. Консорциум поставщиков компьютерного оборудования и баз данных (SQLAccess Group) определил для SQLстандартный интерфейс вызовов функций, который является основой протокола ODBCкомпании Microsoft и входит также в стандарт Х/OPEN.Эти стандарты de facto являются официальным одобрением SQL,и именно они ускорили завоевание им рынка.
Многие из членов комитетов по стандартизации ANSI и ISOпредставляли фирмы — поставщиков различных СУБД,в каждой из которых был реализован собственный диалект SQL. Каки диалекты человеческого языка, диалекты SQLбыли в основном похожи друг на друга, однако несовместимы в деталях. Во многих случаях комитет просто игнорировал существующие различия и не стандартизировал некоторые части языка, определив, что они реализуются по усмотрению разработчика. Этот подход позволил объявить большое число реализаций SQLсовместимыми со стандартом, однако сделал сам стандарт относительно слабым.
|
|
Чтобы заполнить эти пробелы, комитет ANSIпродолжил свою работу и создал проект нового, более жесткого стандарта SQL2.В отличие от стандарта 1989 г., проект SQL2предусматривал возможности, выходящие за рамки таковых, уже существующих в реальных коммерческих продуктах.
Перечислим эти отличия SQL
Коды ошибок. В стандарте SQL2определены стандартные коды, которые возвращают операторы SQLпри возникновении ошибок.
Типы данных. В стандарте SQL2упомянуты многие стандартные типы данных (например, символьные строки переменной длины, дата и время, а также денежные единицы), однако отсутствуют «новые» типы данных, такие как графические и мультимедийные объекты.
Системные таблицы. В стандарте SQL-89умалчивается о системных таблицах, в которых содержится информация о структуре самой базы данных. Поэтому каждый поставщик создавал собственные системные таблицы, и их структура отличается даже в четырех реализациях SQLкомпании IBM. В SQL2системные таблицы стандартизированы.
Интерактивный SQL. Встандарте SQL-89определен только программный SQL,используемый прикладной программой, но не интерактивный SQL. Например, оператор SELECT,предназначенный для выполнения запросов к базе данных в интерактивном режиме, в стандарте отсутствует.
Программный интерфейс. В стандарте SQL2определен интерфейс встроенного SQLдля некоторых языков программирования, но не интерфейс вызова функций.
Динамический SQL. Встандарте SQL-89не описаны элементы SQL,необходимые для разработки приложений общего назначения, таких как генераторы отчетов и программы создания и выполнения запросов. Однако эти элементы, известные под названием динамический SQL, имеются почти во всех СУБДи в различных системах значительно отличаются. В стандарт SQL2входит раздел динамического SQL.
Семантические отличия. Поскольку некоторые элементы определены в стандартах как зависящие от реализации, может возникнуть ситуация, когда в результате выполнения одного и того же запроса в двух совместимых СУБДбудут получены два различных набора результатов. Отличия результатов обусловлены различиями в обработке значений NULL,разными агрегатными функциями и несовпадением процедур удаления повторяющихся строк.
Последовательность сравнения. Стандарт SQL2 позволяет программе или пользователю указывать требуемую последовательность сортировки результатов запроса.
Структура базы данных. В стандарте SQL-89определен язык, операторы которого используются уже после того, как база данных была открыта и подготовлена к работе. Детали именования баз данных и первоначального подключения к ним в разных реализациях сильно отличаются или несовместимы. Стандарт SQL2 в некоторой степени унифицирует этот процесс, хотя и не может полностью ликвидировать все отличия.
Основными направлениями развития SQL2(и принятие SQL3)являются:
• стандартизация интерфейсов вызова функций;
• стандартизация хранимых процедур;
• добавление объектно-ориентированных возможностей.