Структура языка SQL
Курсовая работа, 29 Декабря 2011, автор: пользователь скрыл имя
Описание работы
В начале 1970-х годов в одной из исследовательских лабораторий компании IBM была разработана экспериментальная реляционная СУБД IBM System R, для которой затем был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД. Аббревиатура SEQUEL расшифровывалась как Structured English QUEry Language — «структурированный английский язык запросов». Позже по юридическим соображениям язык SEQUEL был переименован в SQL.
Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Собственно разработкой языка запросов занимались Дональд Чэмбэрлин (Donald D. Chamberlin) и Рэй Бойс (Ray Boyce). Пэт Селинджер (Pat Selinger) занималась разработкой стоимостного оптимизатора (cost-based optimizer), Рэймонд Лори (Raymond Lorie) занимался компилятором запросов.
Содержание
Введение 3
Язык SQL как стандартный язык баз данных 6
Роль SQL 8
Достоинства SQL 10
Независимость от конкретных СУБД 10
Переносимость с одной вычислительной системы на другую 11
Одобрение SQL компанией IBM (DB2) 11
Протокол ODBC и компания Microsoft 12
Реляционная основа 12
Высокоуровневая структура, напоминающая
английский язык 13
Стандарты SQL 13
Стандарты ANSI/ISO 13
Другие стандарты SQL 15
ODBC и консорциум SQL Access Group 15
Миф о переносимости 16
Влияние SQL 19
SQL и спецификация SAA компании IBM 19
SQL на мини-компьютерах 20
SQL на системах UNIX 20
SQL и обработка транзакций 21
SQL на персональных компьютерах 22
SQL в локальных сетях 24
Заключение 26
Глоссарий 29
Список использованной литературы 32
Приложения 33
Работа содержит 1 файл
Структура языка SQL.doc
— 282.00 Кб (Скачать) Тем
не менее, второй стандарт от SQL Access Group
имеет на рынке больший вес. В результате
настойчивых требований компании Microsoft,
консорциум SQL Access Group включил в стандарт
SQL интерфейс вызовов функций. Полученная
спецификация CLI (Call Level Interface), основанная
на разработках компании Microsoft, увидела
свет в 1992 году. В этом же году
была опубликована собственная спецификация
ODBC (Open Database Connectivity — взаимодействие с
открытыми базами данных) компании Microsoft,
основанная на стандарте CLI. Благодаря
рыночной силе Microsoft и благословению, полученному
"открытым стандартом" от SQL Access Group,
ODBC оказался стандартом де-факто для интерфейсов
доступа к базам данных на персональных
компьютерах. Весной 1993 года компании
Apple и Microsoft объявили о соглашении относительно
поддержки ODBC в MacOS и Windows, что закрепило
за этой спецификацией статус стандарта
в обеих популярных средах с графическим
пользовательским интерфейсом.
Миф о переносимости
Появление стандарта SQL вызвало довольно много восторженных заявлений о переносимости SQL и использующих его приложений. Для иллюстрации того, как любое приложение, используя SQL, может работать с любой СУБД, часто приводят диаграммы, подобные изображенной на рис. 3.1 (в приложении А). На самом деле пробелы в стандарте SQL-89 и различия между существующими диалектами SQL достаточно значительны, и при переводе приложения под другую СУБД его всегда приходится модифицировать. Эти отличия, большинство из которых устранено в стандарте SQL2, включают в себя:
- Коды ошибок. В стандарте SQL-89 не определены коды, которые возвращают операторы SQL при возникновении ошибок, и в каждой из коммерческих реализаций используется собственный набор таких кодов. В стандарте SQL2 определены стандартные коды ошибок.
- Типы данных. В стандарте SQL-89 определен минимальный набор типов данных, однако в нем отсутствуют некоторые из наиболее распространенных и полезных типов, например символьные строки переменной длины, дата и время, а также денежные единицы. В стандарте SQL2 упомянуты эти типы данных, однако отсутствуют "новые" типы данных, такие как графические и мультимедийные объекты.
- Системные таблицы. В стандарте SQL-89 умалчивается о системных таблицах, в которых содержится информация о структуре самой базы данных. Поэтому каждый поставщик создавал собственные системные таблицы, и их структура отличается даже в четырех реализациях SQL компании IBM. Системные таблицы стандартизированы в SQL2.
- Интерактивный SQL. В стандарте определен только программный SQL, используемый прикладной программой, но не интерактивный SQL. Например, оператор select, предназначенный для выполнения запросов к базе данных в интерактивном режиме, в стандарте отсутствует.
- Программный интерфейс. В первом стандарте определен абстрактный способ использования SQL в программах, написанных на таких языках программирования, как COBOL, FORTRAN и другие. Этот способ не используется ни в одном коммерческом продукте, а в существующих программных интерфейсах имеются значительные отличия. В стандарте SQL2 определен интерфейс встроенного SQL для популярных языков программирования, но не интерфейс вызова функций.
- Динамический SQL. В стандарте SQL-89 не описаны элементы SQL, необходимые для разработки приложений общего назначения, таких как генераторы отчетов и программы создания и выполнения запросов. Однако эти элементы, известные под названием динамический SQL, имеются почти во всех СУБД и в различных системах значительно отличаются. В SQL2 входит стандарт динамического SQL.
- Семантические отличия. Поскольку некоторые элементы определены в стандартах как зависящие от реализации, может возникнуть ситуация, когда в результате выполнения одного и того же запроса в двух совместимых СУБД будут получены два различных набора результатов. Отличия результатов обусловлены различиями в обработке значений null, разными агрегатными функциями и несовпадением процедур удаления повторяющихся строк.
- Последовательность сравнения. В стандарте SQL-89 не упоминаются последовательности сравнения (сортировки) символов, хранящихся в базе данных. Результаты запроса с сортировкой будут отличаться при выполнении этого запроса на персональном компьютере (с кодировкой ASCII) и на мэйнфрейме (с кодировкой EBCDIC). Стандарт SQL2 позволяет программе или пользователю указывать требуемую последовательность сортировки.
- Структура базы данных. В стандарте SQL-89 определен SQL, который используется уже после того, как база данных была открыта и подготовлена к работе. Детали наименования баз данных и первоначального подключения к ним сильно отличаются и несовместимы. Стандарт SQL2 в некоторой степени унифицирует этот процесс, но не может полностью ликвидировать все отличия.
Вопреки перечисленным различиям, в начале 90-х годов стали появляться коммерческие программы, реализующие переносимость приложений между различными СУБД, Однако в таких программах для каждой из поддерживаемых СУБД требуется специальный конвертер, который генерирует код в соответствии с определенным диалектом SQL, выполняет преобразование - типов данных, транслирует коды ошибок и т.д. "Прозрачная" переносимость между различными СУБД, использующими SQL, является основной целью стандарта SQL2 и протокола ODBC, однако повсеместный, "прозрачный" и унифицированный доступ к базам данных SQL остается делом будущего.
3 Влияние SQL
Будучи
стандартным языком доступа к
реляционной базе данных, SQL оказывает
большое влияние на все сегменты компьютерного
рынка. Компания IBM приняла SQL в качестве
унифицирующей технологии баз данных
для линии своих продуктов. Все поставщики
мини-компьютеров предлагают реляционные
базы данных; такие базы данных доминируют
и на рынке компьютерных систем, работающих
под управлением UNIX. По мере того как отдельные
персональные компьютеры уступают дорогу
сетям с архитектурой клиент/сервер, SQL
видоизменяет рынок баз данных для персональных
компьютеров. SQL применяется даже при оперативной
обработке транзакций, опровергая бытовавшее
ранее мнение, что из-за низкого быстродействия
реляционные базы данных никогда не смогут
использоваться в приложениях для обработки
транзакций.
SQL и спецификация SAA компании IBM
SQL играет ключевую роль в качестве языка доступа к базам данных, объединяющего многочисленные несовместимые компьютерные семейства компании IBM. Эта роль была отведена ему еще в спецификации SAA (Systems Application Architecture — архитектура прикладных систем) компании IBM в 1987 году. Хотя главные цели SAA так и не были достигнуты, объединяющая роль SQL со временем стала еще важнее. Стратегическими программными продуктами компании IBM, предназначенными для работы с базами данных, являются
- DB2. Флагманская реляционная СУБД, являющаяся стандартом SQL для мэйнфреймов компании IBM, работающих под управлением ОС MVS.
- SQL/DS. Реляционная СУБД для VM, другой ОС мэйнфреймов компании IBM.
- SQL/400. Эта реализация SQL для систем среднего уровня поддерживает встроенную реляционную базу данных компьютеров серии AS/400.
- DB2/6000. Эта реализация DB2 работает на рабочих станциях и серверах семейства RS/6000, работающих под управлением операционной системы UNIX.
- DB2/2. Эта реализация SQL для персональных компьютеров компании IBM основана на реализации DB2 для мэйнфреймов. Она заменила OS/2 Extended Edition, которая была первой реляционной СУБД компании IBM для персональных компьютеров, и обеспечила лучшую совместимость с DB2.
SQL на мини-компьютерах
Сегмент рынка реляционных СУБД для мини-компьютеров начал развиваться одним из первых. Первые продукты компаний Oracle и Ingres предназначались для мини-компьютеров VAX/VMS компании Digital. С тех пор оба продукта были перенесены на множество других платформ. СУБД компании Sybase, появившаяся позднее и предназначенная для оперативной обработки транзакций, работала на нескольких платформах, включая VAX.
Кроме
того, поставщики мини-компьютеров
разрабатывали на основе SQL собственные
реляционные базы данных. Компания Digital
на каждую систему VAX/VMS устанавливала
собственную СУБД Rdb/VMS. Компания Hewlett-Packard
предложила Allbase, СУБД, поддерживающую
как собственный диалект HPSQL, так и нереляционный
интерфейс. Компания Data General заменила свои
старые нереляционные базы данных на СУБД
DG/SQL. К тому же многие из поставщиков мини-компьютеров
перепродают реляционные СУБД независимых
поставщиков.
SQL на сиcтемах UNIX
SQL
был однозначно признан лучшим решением
в области управления данными для компьютерных
систем на основе UNIX. Операционная система
UNIX, которая была разработана в Bell Laboratories,
в 80-х годах стала завоевывать популярность
в качестве стандартной операционной
системы. Она работает на разнообразных
компьютерных системах, начиная от рабочих
станций и заканчивая мэйнфреймами, и
стала стандартной ОС для научных и инженерных
приложений. В начале 80-х уже были доступны
четыре большие СУБД для UNIX-систем. Две
из них, производства компаний Oracle и Ingres,
были UNIX-версиями продуктов для мини-компьютеров
компании DEC, Две другие СУБД, производства
компаний Informix и Unify, были созданы специально
для UNIX. Вначале ни одна из них не предлагала
поддержку SQL, но к 1985 году компании Unify
и Informix ввели эту поддержку в свои СУБД.
На сегодняшний день существуют версии
СУБД компаний Oracle, Sybase, Informix и Ingres для
всех ведущих систем на базе UNIX.
SQL и обработка транзакций
В процессе своего развития SQL и реляционные базы данных почти не применялись в приложениях, предназначенных для оперативной обработки транзакций (OLTP — On-Line Transaction Processing). Поскольку в реляционных базах данных упор делается на запросы, такие базы данных традиционно использовались в приложениях, служащих для поддержки принятия решений, и приложениях с маленьким объемом транзакций, где их низкое быстродействие не было недостатком. В области оперативной обработки транзакций, где требовалось обеспечить одновременный доступ к данным сотням пользователей, и время ожидания каждого из них не должно было превышать доли секунды, доминировала нереляционная СУБД IMS (Information Management System — система управления информацией) компании IBM.
В 1986 году компания Sybase, новая на рынке СУБД, представила реляционную базу данных, предназначенную специально для оперативной обработки транзакций. СУБД компании Sybase работала на мини-компьютерах VAX и рабочих станциях Sun и обеспечивала уровень быстродействия, необходимый для обработки больших объемов транзакций. Вскоре вслед за нею компании Oracle Corporation и Relational Technology объявили, что они также выпустят версии своих продуктов Oracle и Ingres для оперативной обработки транзакций. На рынке UNIX-систем компания Informix анонсировала OLTP-версию своей СУБД под названием Informix-Turbo.
В апреле 1988 года компания IBM присоединилась к поставщикам реляционных СУБД для OLTP, выпустив систему DB2 Version 2. Тесты показали, что на больших мэйнфреймах эта система могла обрабатывать до 250 транзакций в секунду. Компания IBM утверждала, что теперь быстродействие DB2 позволяет использовать ее во всех OLTP-приложениях, кроме наиболее требовательных к быстродействию, и поощряла клиентов использовать ее вместо IMS. После этого тесты стали стандартным маркетинговым инструментом для реляционных СУБД, вопреки серьезным сомнениям в том, насколько они отражают быстродействие реальных приложений.
По
мере развития реляционной технологии
и увеличения мощности компьютеров
роль SQL в оперативной обработке транзакций
также возрастает. Теперь для оперативной
обработки транзакций часто используются
реляционные базы данных, быстродействие
которых выросло на несколько порядков.
SQL на персональных компьютерах
С появлением первой модели IBM PC базы данных стали приобретать популярность на рынке персональных компьютеров. СУБД dBASE компании Ashton-Tate была инсталлирована более чем на миллионе PC, работавших под управлением MS-DOS; другие продукты, такие как R-BASE, PFS: File и Paradox, также достигли значительного успеха. На компьютерах семейства Macintosh такие СУБД, как 4th Dimension, объединили в себе управление данными и графический интерфейс пользователя. Хотя в большинстве СУБД для персональных компьютеров данные хранились в табличной форме, эти СУБД не обладали полной мощью реляционной базы данных и не поддерживали SQL.
До конца 80-х SQL мало использовался на персональных компьютерах. К тому времени обычным явлением стали персональные компьютеры, поддерживающие дисковые устройства объемом в десятки и сотни мегабайтов. Однако вскоре пользователи начали объединять персональные компьютеры в сети, и появилась необходимость в совместном использовании данных. В результате персональные компьютеры стали нуждаться в возможностях, которые могли обеспечить реляционные базы данных и SQL.
Первые СУБД для персональных компьютеров представляли собой соответствующим образом переработанные версии известных СУБД для миникомпьютеров и с трудом умещались на персональных компьютерах. Система Professional Oracle, анонсированная в 1984 году, требовала двух мегабайтов памяти на IBM PC, a Oracle for Macintosh, представленная в 1988 году, имела схожие требования. Версия СУБД Ingres для PC, выпущенная в 1984 году, едва удовлетворяла ограничению MS-DOS на объем используемой оперативной памяти (640 Кб). СУБД Informix-SQL для MS-DOS была выпущена в 1986 году и представляла собой версию популярной СУБД, работавшей под управлением UNIX. В том же 1986 году компания Gupta Technologies, основанная бывшим менеджером из Oracle, выпустила SQLBase, СУБД для локальных сетей, которая одной из первых реализовала архитектуру клиент/сервер и была прототипом нынешних СУБД для ЛВС.
С появлением в апреле 1987 года операционной системы OS/2, созданной компаниями Microsoft и IBM, начался рост популярности SQL применительно к персональным компьютерам. Кроме стандартной версии OS/2, компания IBM выпустила расширенную редакцию OS/2 (OS/2 Extended Edition — OS/2 ЕЕ) со встроенной поддержкой реляционных баз данных. Сделав SQL частью операционной системы, компания IBM тем самым вновь подтвердила свою приверженность ему.
Появление OS/2 ЕЕ стало проблемой для компании Microsoft. Поскольку она была разработчиком стандартной OS/2 и продавала ее другим производителям персональных компьютеров, потребовалась альтернатива OS/2 ЕЕ. Ответом Microsoft стала покупка лицензии на СУБД компании Sybase, разработанной для VAX, и перенос этой СУБД в систему OS/2.
В
январе 1988 года Microsoft и Ashton-Tate неожиданно
объявили, что они будут совместно продавать
новую СУБД, получившую название SQL Server.
Компания Microsoft будет продавать SQL Server
вместе с OS/2 производителям компьютеров,
а компания Ashton-Tate будет продавать SQL Server
по розничным каналам пользователям PC.
В сентябре 1989 года
компания Lotus Development внесла свой вклад
в SQL Server, сделав инвестицию в компанию
Sybase. Через год с небольшим компания Ashton-Tate
отказалась от исключительных прав на
распространение и продала свою долю компании
Lotus. Хотя успех SQL Server для OS/2 был ограниченным,
она продолжает играть ключевую роль в
планах компании Microsoft. Эта СУБД является
реляционной базой данных для Windows NT, флагманской
операционной системы компании Microsoft,
предназначенной для работы в среде клиент/сервер.
SQL в локальных сетях
Появление OS/2 Extended Edition и SQL Server привлекло внимание к потенциальным возможностям SQL в локальных вычислительных сетях. Заказчики стали всерьез рассматривать архитектуру клиент/сервер в качестве альтернативы центральному мини-компьютеру или мэйнфрейму.