Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
Петрозаводский государственный университет
Кольский филиал
Кафедраинформационных технологий
Доклад на тему:
«Язык SQL –общая характеристика, интерфейс с традиционными языками программирования»
студента 5 курса (гр. 2)
очного отделения
факультета ИПМ
специальности 230102 - Автоматизированныесистемы обработки информации и управления
Самсонова Антона Владимировича
Апатиты
2010
Оглавление
1 Характеристики
2 Вопросыпрактического программирования
3 Вопросысовместимости
4 РеализацииSQL
5 Типыкоманд SQL
6 Преимуществаи недостатки языка SQL
6.1 Преимущества
6.2 Недостатки
Список использованных источников
В начале 1970-х годов водной из исследовательских лабораторий компании IBM была разработанаэкспериментальная реляционная СУБД IBM System R, для которой затем был созданспециальный язык SEQUEL, позволявший относительно просто управлять данными вэтой СУБД. Аббревиатура SEQUEL расшифровывалась как Structured English QUEryLanguage — «структурированный английский язык запросов». Позже по юридическимсоображениям язык SEQUEL был переименован в SQL.
Целью разработки былосоздание простого непроцедурного языка, которым мог воспользоваться любойпользователь, даже не имеющий навыков программирования. Собственно разработкойязыка запросов занимались Дональд Чэмбэрлин (Donald D. Chamberlin) и Рэй Бойс(Ray Boyce). Пэт Селинджер (Pat Selinger) занималась разработкой стоимостногооптимизатора (cost-based optimizer), Рэймонд Лори (Raymond Lorie) занималсякомпилятором запросов.
Первыми СУБД,поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX откомпании Relational Software Inc. (впоследствии ставшей компанией Oracle) иSystem/38 от IBM, основанная на System/R. Вопреки сложившемуся мнению, первойстала именно СУБД Oracle.
Рост количества данных,необходимость их хранения и обработки привели к тому, что возникла потребностьв создании стандартного языка баз данных, который мог бы функционировать вмногочисленных компьютерных системах различных видов. Действительно, с егопомощью пользователи могут манипулировать данными независимо от того, работаютли они на персональном компьютере, сетевой рабочей станции или универсальнойЭВМ.
SQL (англ. StructuredQuery Language — «язык структурированных запросов») — универсальныйкомпьютерный информационно-логический язык, появившийся в результате разработкиреляционной модели данных, применяемый для создания, модификации и управленияданными в реляционных базах данных.
Изначально, SQLбыл основным способом работы пользователя с базой данных и представлял собойнебольшую совокупность команд (операторов) допускающих создание таблиц,добавление в таблицы новых записей, извлечение записей из таблиц (в соответствиис заданным условием), удаление записей и изменение структур таблиц. В связи сусложнением язык SQL стал болееприкладным языком программирования, а пользователи получили возможностьиспользовать визуальные построители запросов.
SQL принципиально отличаетсяот традиционных алгоритмических языков программирования прежде всего тем, чтоон относится к непроцедурным языкам. На языке типа Кобол или Си можно записатьшаг за шагом все инструкции, необходимые для исполнения программы. Язык SQLпозволяет задать только то, “что нужно делать”, а само исполнение отдельныхопераций (“как делать”) возлагается непосредственно на СУБД. Такой подход взначительной мере определяется самой философией реляционных баз данных. СУБД вданном случае рассматривается как “черный ящик”, и что происходит внутри него,пользователя не должно касаться. Его должно интересовать только внесение в базуданных необходимых изменений и получение правильного ответа на запрос.
Другой особенностью SQLявляется так называемая трехзначная логика. В большинстве языков булевовыражение может принимать только два значения: истина и ложь. Язык SQLпозволяет записывать в базу данных значение NULL (пустое значение). NULL – этоспециальный код, который помещается в столбец таблицы, если по какой-нибудьпричине в нем отсутствуют данные. Когда значение NULL участвует в операцияхсравнения, булев результат будет ни истина и ни ложь, а неизвестно.
Все языкиманипулирования данными, созданные для многих СУБД до появления реляционных базданных, были ориентированы на операции с данными, представленными в виделогических записей файлов. Разумеется, это требовало от пользователя детальногознания организации хранения данных и серьезных усилий для указания того, какиеданные необходимы, где они размещаются и как их получить.
Благодаря работающим сфайловыми серверами СУБД, множество пользователей получают доступ к одним и темже базам данных. Упрощается разработка различных автоматизированных системуправления организациями. Однако при таком подходе вся обработка запросов изпрограмм или с терминалов пользовательских ЭВМ на них и выполняется, поэтомудля реализации даже простого запроса необходимо считывать с файлового сервераили записывать на него целые файлы, а это ведет к конфликтным ситуациям иперегрузке сети. Для исключения указанных недостатков была предложенатехнология клиент-сервер, но при этом понадобился единый язык общения ссервером – выбор пал на SQL.
Рассматриваемый языкSQL ориентирован на операции с данными, представленными в виде логически взаимосвязанныхсовокупностей таблиц-отношений. Важнейшая особенность его структур – ориентацияна конечный результат обработки данных, а не на процедуру этой обработки. ЯзыкSQL сам определяет, где находятся данные, индексы и даже какие наиболееэффективные последовательности операций следует использовать для получениярезультата, а потому указывать эти детали в запросе к базе данных не требуется.
SQL в настоящее времяполучил очень широкое распространение и фактически превратился в стандартныйязык реляционных баз данных. Стандарт на язык SQL был выпущен Американскимнациональным институтом стандартов (ANSI) в 1986 г., а в 1987 г. Международнаяорганизация стандартов (ISO) приняла его в качестве международного. Дальнейшееразвитие языка поставщиками СУБД потребовало принятия в 1992 году новогорасширенного стандарта (ANSI SQL-92 или просто SQL2). Следующим стандартом сталSQL:1999 (SQL3). В настоящее время действует стандарт, принятый в 2003 году(SQL:2003) с небольшими модификациями, внесёнными позже.
Как правило, любойпоставщик СУБД предоставляет вместе со своей системой внешнюю утилиту, котораяпозволяет вводить операторы SQL в режиме командной строки и выдает на консольрезультаты их выполнения (так, как это сделано на этой страничке,предоставляющей интерактивный доступ к БД publications). Недостатки такогорежима работы очевидны: необходимо знать SQL, необходимо помнить схему БД,отсутствует возможность удобного просмотра результатов выполнения запросов.Поэтому, подобные утилиты стали инструментами администраторов баз данных, а длясоздания пользовательских приложений используются универсальные испециализированные языки программирования. Приложения, написанные такимобразом, позволяют пользователю сосредоточиться на решении собственных задач, ане на структурах данных.
Почти все способыорганизации взаимодействия пользователя с базой данных основаны на модели"клиент-сервер". Т.е. предполагается, что каждое приложение обработкиданных разбито, как минимум, на две части:
клиента, которыйотвечает за организацию пользовательского интерфейса
сервер, которыйсобственно хранит данные, обрабатывает запросы и посылает их результаты клиентудля отображения
При этомпредполагается, что каждая часть приложения функционирует на отдельномкомпьютере, т.е. к выделенному серверу БД с помощью локальной сети подключеныперсональные компьютеры пользователей (клиенты). Это наиболее популярнаясегодня схема организации вычислительной среды.
Язык SQL позволяеттолько манипулировать данными, но в нем отсутствуют средства создания экранногоинтерфейса, что необходимо для пользовательских приложений. Для создания этогоинтерфейса служат универсальные языки третьего поколения (C, C++, Pascal) илипроблемно-ориентированные языки четвертого поколения (xBase, Informix 4Gl,Progress, Jam,...). Эти языки содержат необходимые операторы ввода / вывода наэкран, а также операторы структурного программирования (цикла, ветвтеления ит.д.). Также эти языки допускают определение структур, соответствующих записямтаблиц обрабатываемой базы данных. В исходный текст программы включаютсяоператоры языка SQL, которые во время исполнения передаются серверу БД, которыйсобственно и производит манипулирование данными. Отношения, полученные врезультате выполнения сервером SQL-запросов, возвращаются прикладной программе,которая заполняет строками этих отношений заранее определенные структуры.Дальнейшая работа клиентской программы (отображение, корректировка записей)ведется с этими структурами.
Каждая СУБД помимоинтерактивной SQL-утилиты обязательно имеет библиотеку доступа и набордрайверов для различных операционных систем.
Библиотека доступа -это, как правило, объектный файл, исходный код которого создан на универсальномязыке типа C. Эта библиотека содержит набор функций, позволяющихпользовательскому приложению соединятся с базой данных, передавать запросысерверу и получать ответные данные. Типичный набор функций такой библиотеки(имена функций зависят от используемой библиотеки):
Библиотечные вызовыпреобразуются драйвером базы данных в сетевые вызовы и передаются сетевымпрограммным обеспечением на сервер.
На сервере происходитобратный процесс преобразования: сетевые пакеты -> функции библиотеки ->SQL-запросы, запросы обрабатываются, их результаты передаются клиенту.