Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диго С.М. Базы данных проектирование и использование.doc
Скачиваний:
723
Добавлен:
14.05.2016
Размер:
12.04 Mб
Скачать

Глава 7 язык sql

7.1. Общая характеристика sql

Одним из самых распространенных языков запросов является язык SQL (Structure Query Language). Он был разработан в середине 1970-х гг. (IBM). Первой коммерческой системой, в которой реализо­ван этот язык, была система Oracle (1979 г.). В дальнейшем он был реализован в целом ряде популярных СУБД для различных типов ЭВМ и операционных систем. В некоторых СУБД, таких, как Oracle, INGRES, MS SQL-сервер и др., язык SQL используется в качестве основного. В других системах, например СУБД семейства dBase, Access, AD ABAS и других, этот язык применяется в качестве альтер­нативного.

Предшественником SQL был язык SEQUEL (Structured English Query Language).

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

Десятки фирм-разработчиков программного обеспечения созда­ли собственные версии (диалекты) языка SQL. Несмотря на наличие стандарта, эти версии различаются как по синтаксису, так и по дру­гим характеристикам. Есть возможности, которые реализованы во многих системах. Использование возможностей языка, реализован­ных в большинстве систем, упрощает создание гетерогенных систем, а также не создает дополнительных проблем в случае перевода ИС в среду другой СУБД. Однако ориентация на применение только стан­дартных возможностей SQL может ограничить доступ к дополнитель­ным функциональным возможностям отдельного сервера.

Язык SQL близок к классу языков реляционного исчисления кор­тежей и используется в основном в реляционных СУБД. Но в связи с его очень широким применением имеются попытки реализации SQL и в других классах систем (например, в сетевой системе db_VISTA III).

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

Язык баз данных SQL включает в себя два языка.- язык определе­ния схемы (SQL-DDL) я язык манипулирования данными (SQL-DML). Язык DDL позволяет описывать и создавать такие объекты базы дан­ных, как таблицы, индексы, представления и др. Язык DML дает воз­можность задавать поисковые и корректирующие запросы к базе дан­ных. Операторы языка манипулирования данными SQL могут исполь­зоваться как самостоятельно (интерактивный или автономный SQL), так и совместно с операторами других языков манипулирования дан­ными (встроенный SQL).

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

Имеется два типа встроенных SQL-операторов: статический SQL и динамический SQL. Статический SQL ссылается на SQL-операто­ры, которые известны до момента запуска и в дальнейшем не изменя­ются, в то время как динамические SQL-операторы определяются толь­ко во время выполнения программы.

Кроме DDL и DML иногда в качестве самостоятельного подмно­жества выделяют язык управления данными (DCL - Data Control Language). Операторы DCL обычно используются для создания объек­тов, относящихся к управлению доступом пользователей к базе дан­ных, а также для назначения пользователям подходящих уровней при­вилегий доступа.

SQL является языком высокого уровня. Пользователь не должен при его использовании помнить об открытии и закрытии каких-либо таблиц, определять наиболее эффективный способ реализации зап­роса, активизировать индексы и т.п. Все это система делает автоматически. Во многих современных СУБД имеются построители запро­сов SQL. Обычно в этом качестве выступают языки типа QBE. Но не все типы запросов SQL могут быть реализованы на QBE. Некоторые типы запросов, например запрос-объединение (Union), невозможно создать на QBE.