Рисунок 1.7 – Извлечение данных с использованием SQL запроса.
SQL позволяет не только извлекать данные, но и определять структуру данных, добавлять и удалять данные, ограничивать или предоставлять доступ к данным, поддерживать ссылочную целостность.
SQL сам по себе не является ни СУБД, ни отдельным продуктом. Это язык, применяемый для взаимодействия с СУБД и являющийся в определенном смысле ее неотъемлемой частью.
SQL содержит примерно 40 операторов для выполнения различных действий внутри СУБД. Ниже приводится краткое описание категорий этих операторов.
Data Definition Language содержит операторы, позволяющие создавать, изменять и уничтожать базы данных и объекты внутри них (таблицы, представления и др.).
Data Manipulation Language содержит операторы, позволяющие выбирать, добавлять, удалять и модифицировать данные. Эти операторы не обязаны завершать транзакцию, внутри которой они вызваны.
Операторы Transaction Control Language применяются для управления изменениями, выполненными группой операторов DML.
Операторы Data Control Language, иногда называемые операторами Access Control Language, применяются для осуществления административных функций, присваивающих или отменяющих право (привилегию) использовать базу данных, таблицы в базе данных, а также выполнять те или иные операторы SQL.
Операторы Cursor Control Language используются для определения курсора, подготовки SQL-предложений для выполнения, а также для некоторых других операторов.
Каждый оператор SQL начинается с глагола, представляющего собой ключевое слово, определяющее, что именно делает этот оператор (SELECT, INSERT, DELETE...). В операторе содержатся также предложения, содержащие сведения о том, над какими данными производятся операции. Каждое предложение начинается с ключевого слова, такого как FROM, WHERE и др. Структура предложения зависит от его типа — ряд предложений содержит имена таблиц или полей, некоторые могут содержать дополнительные ключевые слова, константы или выражения.
Все операторы SQL имеют вид, показанный на рисунке 1.8.
Рисунок 1.8 – Общий вид операторов SQL
Первая промышленная версия СУБД dBase — dBase II (принадлежащая тогда компании Ashton-Tate, приобретенной позже компанией Borland) появилась в начале 80-х годов. Благодаря простоте в использовании, нетребовательности к ресурсам компьютера и, что не менее важно, грамотной маркетинговой политике компании-производителя этот продукт приобрел немалую популярность, а с выходом следующих его версий — dBase III и dBase III Plus (1986 г.), оснащенных весьма комфортной по тем временам средой разработки и средствами манипуляции данными, быстро занял лидирующие позиции среди настольных СУБД и средств создания использующих их приложений.
Хранение данных в dBase основано на принципе «одна таблица — один файл» (эти файлы обычно имеют расширение *.dbf). MEMO-поля и BLOB-поля (доступные в поздних версиях dBase) хранятся в отдельных файлах (обычно с расширением *.dbt). Индексы для таблиц также хранятся в отдельных файлах. При этом в ранних версиях этой СУБД требовалась специальная операция реиндексирования для приведения индексов в соответствие с текущим состоянием таблицы.
Формат данных dBase является открытым, что позволило ряду других производителей заимствовать его для создания dBase-подобных СУБД, частично совместимых с dBase по форматам данных.
Помимо популярного формата данных dBase является родоначальником и некогда популярного семейства языков программирования, получившего называние xBase. Все языки этого семейства, использующиеся и в FoxBase, и в Clipper, содержат сходный набор команд для манипуляции данными и являются по существу интерпретируемыми языками. В роли интерпретатора команд xBase выступает обычно либо среда разработки приложения на этом языке, либо среда времени выполнения, которую можно поставлять вместе с приложением. Отметим, что для скрытия исходного текста xBase-приложения подобные СУБД обычно содержат утилиты для псевдокомпиляции кода, который затем поставляется вместе со средой времени выполнения. В случае Clipper среда времени выполнения содержится в самом исполняемом файле (и сам Clipper формально считается компилятором), но тем не менее этот язык по существу также является интерпретируемым.
Для работы с данными формата dBase (или иных dBase-подобных СУБД) совершенно необязательно пользоваться диалектами xBase. Доступ к этим данным возможен с помощью ODBC API (и соответствующих драйверов) и некоторых других механизмов доступа к данным (например, Borland Database Engine, некоторых библиотек других производителей типа СodeBase фирмы Sequenter), и это позволяет создавать приложения, использующие формат данных dBase, практически с помощью любого средства разработки, поддерживающего один из этих механизмов доступа к данным.
После покупки dBase компанией Borland этот продукт, получивший впоследствии название Visual dBase, приобрел набор дополнительных возможностей, характерных для средств разработки этой компании и для имевшейся у нее другой настольной СУБД — Paradox. Среди этих возможностей были специальные типы полей для графических данных, поддерживаемые индексы, хранение правил ссылочной целостности внутри самой базы данных, а также возможность манипулировать данными других форматов, в частности серверных СУБД, за счет использования BDE API и SQL Links.
В настоящее время Visual dBase принадлежит компании dBase, Inc. Его последняя версия — Visual dBase 7.5 имеет следующие возможности:
· Средства манипуляции данными dBase и FoxPro всех версий.
· Средства создания форм, отчетов и приложений.
· Средства публикации данных в Internet и создания Web-клиентов.
· Ядро доступа к данным Advantage Database Server фирмы Extended Systems и ODBC-драйвер для доступа к данным этой СУБД.
· Средства публикации отчетов в Web.
· Средства визуального построения запросов.
· Средства генерации исполняемых файлов и дистрибутивов.
Компания dBase, Inc объявила также о проекте dBASE Open Source, целью которого является разработка сообществом пользователей dBase новых компонентов и классов с целью включения их в последующую версию dBase (получившую название dBase 2000). Иными словами, имеется тенденция превращения dBase (или его частей) в некоммерческий продукт с доступными исходными текстами.
Первая версия СУБД Access появилась в начале 90-х годов. Это была первая настольная реляционная СУБД для 16-разрядной версии Windows. Популярность Access значительно возросла после включения этой СУБД в состав Microsoft Office.
В отличие от Visual FoxPro, фактически превратившегося в средство разработки приложений, Access ориентирован в первую очередь на пользователей Microsoft Office, в том числе и не знакомых с программированием. Это, в частности, проявилось в том, что вся информация, относящаяся к конкретной базе данных, а именно таблицы, индексы (естественно, поддерживаемые), правила ссылочной целостности, бизнес-правила, список пользователей, а также формы и отчеты хранятся в одном файле, что в целом удобно для начинающих пользователей.
Последняя версия этой СУБД — Access 2003, в состав которой входят:
· Средства манипуляции данными Access и данными, доступными через ODBC (последние могут быть «присоединены» к базе данных Access).
· Средства создания форм, отчетов и приложений; при этом отчеты могут быть экспортированы в формат Microsoft Word или Microsoft Excel, а для создания приложений используется Visual Basic for Applications, общий для всех составных частей Microsoft Office.
· Средства публикации отчетов в Internet.
· Средства создания интерактивных Web-приложений для работы с данными (Data Access Pages).
· Средства доступа к данным серверных СУБД через OLE DB.
· Средства создания клиентских приложений для Microsoft SQL Server.
· Средства администрирования Microsoft SQL Server.
Иными словами, Microsoft Access может быть использован, с одной стороны, в качестве настольной СУБД и составной части офисного пакета, а с другой стороны, в качестве клиента Microsoft SQL Server, позволяющего осуществлять его администрирование, манипуляцию его данными и создание приложений для этого сервера.
Помимо манипуляции данными Microsoft SQL Server, Access 2003 позволяет также в качестве хранилища данных использовать Microsoft Data Engine (MSDE), представляющий собой по существу настольный сервер баз данных, совместимый с Microsoft SQL Server.
Существует множество различных СУБД. Любая СУБД предоставляет некий программный интерфейс (API – Application Programming Interface) с помощью которого можно работать с СУБД. Обычно используется технология клиент-сервер, т.е. прикладная программа с помощью API соединяется с СУБД на сервере, который является другой машиной где-то в сети. Однако при таком подходе возникают проблемы если приложению требуется работать с несколькими СУБД, причин по которым такая необходимость может возникнуть множество. В этом случае разработка такого приложения значительно облегчилась бы при использовании некоторого универсального API для работы с любой СУБД. Поэтому появились универсальные интерфейсы для доступа к любым СУБД ADO, BDE, ODBC. Они очень похожи друг на друга и имеют общие принципы, однако разработаны разными компаниями и поэтому с точки зрения прикладной программы различные. Есть некоторые пересечения у этих технологий, например BDE может использовать драйвера ODBC, а некоторые драйвера ODBC наоборот BDE (например, для доступа к файловым таблицам DBF и т.п.).
Во всех этих интерфейсах можно выделить следующие понятия:
· Data source – клиентская часть СУБД с собственным API (Native API).
· Driver – осуществляет связь с конкретной СУБД через API предоставляемый ей, обеспечивает выполнение запросов на языке SQL и получение результатов. Может немного изменять текст SQL запроса в соответствии с синтаксисом конкретной СУБД.
· Driver Manager – осуществляет управление драйверами необходимыми приложению (загружает, выгружает) а также предоставляет API и обеспечивает передачу вызова собственного API драйверу.