 |
Основные идеи современной информационной технологии базируются на концепции,
согласно которой данные должны быть организованы в базы данных с целью
адекватного отображения изменяющегося реального мира и удовлетворения
информационных потребностей пользователей. Эти базы данных создаются и
функционируют под управлением специальных программных комплексов, называемых
системами управления базами данных (СУБД) [3].
Борясь за
покупателя, фирмы, производящие программное обеспечение, стали выпускать на
рынок все более и более интеллектуальные и, следовательно, объемные программные
комплексы. Приобретая (желая
приобрести) такие комплексы, многие организации и отдельные пользователи часто
не могли разместить их на собственных ЭВМ, однако не хотели и отказываться от
нового сервиса. Для обмена информацией и ее обобществления были созданы сети
ЭВМ, где обобществляемые программы и данные стали размещать на специальных
обслуживающих устройствах – файловых серверах.
СУБД,
работающие с файловыми серверами, позволяют множеству пользователей разных ЭВМ
(иногда расположенных достаточно далеко друг от друга) получать доступ к одним и
тем же базам данных. При этом
упрощается разработка различных автоматизированных систем управления
организациями, учебных комплексов, информационных и других систем, где множество
сотрудников (учащихся) должны использовать общие данные и обмениваться
создаваемыми в процессе работы (обучения).
Однако при такой идеологии вся обработка запросов из программ или с
терминалов пользователя выполняется на этих серверах.
Для обеспечения эффективной работы при решении таких задач была
предложена технология "Клиент-Сервер", по которой запросы пользовательских ЭВМ
(Клиент) обрабатываются на специальных серверах баз данных (Сервер), а на
клиента возвращаются лишь результаты обработки запроса [1].
Увеличение
объема и структурной сложности хранимых данных, расширение круга пользователей
информационных систем привели к широкому распространению наиболее удобных и
сравнительно простых для понимания реляционных (табличных) СУБД.
Для обеспечения одновременного доступа к данным множества пользователей,
нередко расположенных достаточно далеко друг от друга и от места хранения баз
данных, созданы сетевые мультипользовательские версии СУБД.
В них тем или иным путем решаются специфические проблемы параллельных
процессов, целостности (правильности) и безопасности данных, а также
санкционирования доступа.
Ясно, что
совместная работа пользователей в сетях с помощью унифицированных средств
общения с базами данных возможна только при наличии стандартного языка
манипулирования данными, обладающего средствами для реализации перечисленных
выше возможностей.
Таким
языком стал
SQL, разработанный в 1974
году фирмой
IBM для экспериментальной
реляционной СУБД
System
R. После появления на рынке
двух пионерских СУБД этой фирмы –
SQL/DS (1981 год) и
DB2 (1983 год) – он приобрел статус стандарта де-факто для
профессиональных реляционных СУБД. В
1987 году
SQL стал международным стандартом языка баз данных, а в 1992 году вышла
вторая версия этого стандарта.
Поэтому все современные версии профессиональных реляционных СУБД (DB2,
Oracle,
Ingres,
Informix,
Sybase,
Progress,
Rdb) и даже нереляционных
СУБД (например,
Adabas) используют технологию "Клиент-Сервер" и язык
SQL.
К тому же приходят разработчики СУБД для персональных ЭВМ, многие из
которых уже сегодня снабжены языком
SQL
[4].
Рассматриваемый же ниже непроцедурный язык
SQL (Structured
Query
Language
– структурированный язык
запросов) ориентирован на операции с данными, представленными в виде логически
взаимосвязанных совокупностей таблиц. Особенность предложений этого языка
состоит в том, что они ориентированы в большей степени на конечный результат
обработки данных, чем на процедуру этой обработки.
SQL
сам определяет, где находятся данные, какие индексы и даже наиболее эффективные
последовательности операций следует использовать для их получения: не надо
указывать эти детали в запросе к базе данных.
Реализация
в
SQL концепции операций,
ориентированных на табличное представление данных, позволило создать компактный
язык с небольшим (менее 30) набором предложений.
SQL может использоваться
как интерактивный (для выполнения запросов) и как встроенный (для построения
прикладных программ).
Основными
конструкциями языка служат:
- предложения определения данных (определение баз данных, а также определение
и уничтожение таблиц и индексов);
- запросы
на выбор данных (предложение SELECT);
- предложения модификации данных (добавление, удаление и изменение данных);
- предложения управления данными (предоставление и отмена привилегий на доступ
к данным, управление транзакциями и другие).
- Кроме того,
SQL предоставляет
возможность выполнять в своих предложениях:
- арифметические вычисления (включая разнообразные функциональные
преобразования), обработку текстовых строк и выполнение операций сравнения
значений арифметических выражений и текстов;
- упорядочение
строк и (или) столбцов при выводе содержимого таблиц на печать или экран
дисплея;
- создание представлений (виртуальных таблиц), позволяющих пользователям иметь
свой взгляд на данные без увеличения их объема в базе данных;
- запоминание выводимого по запросу содержимого таблицы, нескольких таблиц или
представления в другой таблице (реляционная операция присваивания).
- агрегатирование данных: группирование данных и применение к этим группам
таких операций, как среднее, сумма, максимум, минимум, число элементов и
т.п.
Ориентированный на работу с таблицами
SQL не имеет достаточных средств для создания сложных прикладных программ.
Поэтому в разных СУБД он либо используется вместе с языками
программирования высокого уровня (например, такими как Си или Паскаль), либо
включен в состав команд специально разработанного языка СУБД (язык систем
dBASE,
R:BASE,
Oracle и т.п.).
Здесь
рассматриваются наиболее важные предложения базового варианта
SQL, изложенного в
стандарте
ANSI 1992 года,
позволяющие познакомиться с основными средствами манипулирования данными.
Недостаток места не позволил подробно рассмотреть другие его конструкции. Однако
и таких знаний достаточно для получения данных из баз, находящихся под
управлением большинства современных СУБД.
В разделе
«Основные
понятия реляционной модели базы данных» кратко даются необходимые для дальнейшего
понимания материала понятия из теории реляционных баз данных.
Раздел
«Первое,
что нужно
знать» посвящен описанию типов данных,
арифметических и логических конструкций, а так же функций, изложенных в
стандарте языка
ANSI SQL-92.
Раздел
«Среда
SQL*Plus» описывает основные принципы работы со
средством
SQL*Plus корпорации
Oracle – простого командного интерфейса пользователя для работы с
сервером
Oracle 7 [2]. Если
читатель пользуется какой-либо другой прикладной программой, реализующей те же
самые функции, он может пропустить этот раздел.
Однако все примеры в тексте пособия приводятся так, как это выглядит в
среде
SQL*Plus.
В разделе
«Выборка
данных из базы данных» читатель найдет описание команды
SELECT – единственного
средства выборки данных в языке
SQL. Материал
содержит множество примеров, поясняющих использование этой мощной команды для
решения конкретных задач.
В следующем
разделе «Определение
структур данных» описаны элементы языка определения
структур данных (Database
Definition
Language,
DDL), предназначенных для
создания, модификации и удаления основной структуры для хранения данных в
реляционной СУБД – таблицы.
Раздел
«Манипулирование
данными» посвящен описанию команд языка
манипулирования данными (Database
Manipulation
Language,
DML), с помощью которых
данные можно заносить в таблицы, редактировать их или удалять из таблиц.
Раздел
«Управление
транзакциями» полностью описывает очень важную тему –
язык управления транзакциями (Transaction
Control
Language,
TCL).
Транзакция является основной логической единицей для работы реляционных
СУБД. Именно с помощью аппарата управления транзакциями СУБД содержит базу
данных, с которой работают пользователи, в целостном виде.
Дополнительные объекты для хранения и обработки данных – последовательности,
представления и индексы описываются в разделе
«Другие
объекты базы данных».
Команды для работы с этими объектами относятся к группе команд
DDL.
И наконец,
в последнем разделе «Задания
для практических занятий» приводятся контрольные упражнения, которые
необходимо выполнить читателю для усвоения предлагаемого материала. Эти задания
можно выполнять на практических занятиях в компьютерном классе, в домашних
условиях, совместно с преподавателем или самостоятельно.
В тексте каждого раздела приводятся ссылки на соответствующее
практическое занятие, помеченные изображением компьютера.
В
«Приложениях» содержится справочный материал –
структуры таблиц и
ER-диаграмма учебной базы данных.
Эта информация постоянно требуется для выполнения практических заданий.
|