Главная Программы Учебное пособие Практикум Дополнительно
    Введение
  Глава 1
  Глава 2
  Глава 3
  Глава 4
  Глава 5
  Глава 6
  Глава 7
  Глава 8
  Задания
  Литература
  Приложение 1
  Приложение 2
  Приложение 3

Практикум

Введение

Основные идеи современной информационной технологии базируются на концепции, согласно которой данные должны быть организованы в базы данных с целью адекватного отображения изменяющегося реального мира и удовлетворения информационных потребностей пользователей. Эти базы данных создаются и функционируют под управлением специальных программных комплексов, называемых системами управления базами данных (СУБД) [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-диаграмма учебной базы данных.  Эта информация постоянно требуется для выполнения практических заданий.