3605 ОСНОВЫ ЯЗЫКА SQL

Цель работы: знакомство с возможностями утилиты IBExpert при работе с СУБД InterBase (Firebird).

 

  1. Общие сведения об InterBase

InterBase – это система управления реляционными базами данных (RDBMS – Relational Database Management System) [1,2]. Такие базы данных (БД) в отличие от набора файлов данных (например, файлов с расширением DBF и подобных), связанных сквозными индексными ссылками, применяются для разработки сложных информационных систем на базе технологии «клиент-сервер» с целью уменьшения риска потери или разрушения данных в случае несанкционированного доступа в многопользовательской и конкурентной среде. InterBase обеспечивает полную SQL–поддержку для всех реляционных концепций и структур. В настоящее время InterBase существует на нескольких наиболее популярных платформах: Unix, NetWare, Windows 2000/NT/95/98. БД InterBase на физическом уровне представляет собой один файл с расширением *.gdb (или *.fdb), в котором хранятся все данные, метаданные и права доступа.

В настоящем курсе лабораторных работ используется свободно распространяемый вариант сервера InterBase под названием Firebird 1.0. Эта версия Firebird по своим функциональным возможностям соответствует версии InterBase 6.1. Далее при упоминании сервера InterBase имя Firebird будет использоваться в качестве синонима и наоборот.

Сервер Firebird работает по следующей схеме. На компьютере с ОС Windows XP/2000/NT запускается служба ibserver.exe. Если используется ОС Windows 98, то сервер запускается как приложение. В этом случае после его загрузки на панели задач будет отображаться следующая пиктограмма: . При работе в качестве службы данная пиктограмма не отображается. На машине (клиенте), с которой будет осуществляться доступ к серверу (т.е. к какой-либо БД под его управлением), должна быть размещена клиентская часть сервера – библиотека gds32.dll. Доступ к БД может осуществляться с использованием сетевого соединения (например, по протоколу TCP/IP) в случае, если производится подключение к удаленному серверу. Локальное соединение используется, если и сервер, и приложение размещены на одном и том же компьютере.

В данном курсе лабораторных работ в качестве клиентского приложения будет использоваться IBExpert. С его помощью будут выполняться запросы, редактироваться объекты БД и т.п.

 

1.1.  Инструмент разработчика IBExpert

Установка и общая характеристика IBExpert

IBExpert является одним из лучших инструментальных пакетов для работы с базами данных Firebird. Он позволяет в визуальном режиме создавать и модифицировать все объекты, содержащиеся в БД. После работы в одном из визуальных редакторов (таблиц, доменов, скриптов и т.д.) выполняется компиляция произведенных действий. При этом IBExpert генерирует соответствующие операторы модификации базы, выполнение которых над БД подтверждается нажатием кнопки «Commit». IBExpert также содержит средства анализа производительности выполнения запросов. С его помощью можно решать подавляющее большинство задач, возникающих при проектировании и создании баз данных Firebird. Дистрибутив можно скопировать с сайта www.ibexpert.com. Для русификации IBExpert нужно войти в меню «Options\Environment Options» и в выпадающем списке «Interface Language» выбрать значение «Russian». На рис. 1 представлено главное окно IBExpert.

 

 

Создание и подключение к базе данных

Для создания БД необходимо выполнить пункт «Создать базу» меню «База данных». После выполнения указанного действия появляется окно диалога задания параметров создаваемой БД, которое представлено на рис. 2.

В поле «Файл БД» требуется указать полный существующий путь  и имя создаваемого файла БД. Путь к БД – это локальный путь размещения файла базы данных Firebird на сервере (локальном или удаленном). Параметр «Сервер» определяет режим доступа к БД. Значение «Локальный» следует выбирать, если файл БД будет располагаться на той же машине, на которой установлен сервер. Если база создается на удаленном сервере, то нужно выбрать параметр «Удаленный», затем выбрать соответствующий сетевой протокол и имя сервера (на рисунке не отображаются).

Далее следует указать имя пользователя и пароль, под которым будет осуществляться доступ к БД. Для системного администратора определены имя ‘SYSDBA’ и пароль ‘masterkey’. Пароль чувствителен к регистру символов. Пользователь, определенный как системный администратор, имеет полный доступ к БД и имеет право вносить любые изменения, а также определять права доступа для всех пользователей.

 

Нажатие кнопки «OK» приводит к созданию БД. Если выбран параметр «Зарегистрировать после создания», то далее появится диалог регистрации псевдонима БД и установки параметров подключения. После этого будет создан псевдоним БД, используя который в IBExpert, в будущем можно будет подключаться к этой базе данных. Для регистрации уже существующей БД нужно выбрать пункт «Зарегистрировать базу» меню «База данных». На рис.3 представлена форма регистрации БД.

Для подключения к существующей БД необходимо два раза щелкнуть левой кнопкой мыши по названию БД в окне Database Explorer или щелкнуть левой кнопкой мыши по пиктограмме .

После подключения к БД в окне Database Explorer появится список всех объектов базы, как показано на рис. 4. При щелчке правой кнопкой мыши по какому-либо объекту появляется контекстное меню, содержащее список допустимых операций над выбранным объектом.

 

Создание нового домена

Для создания домена существует два способа: с помощью оператора CREATE DOMAIN в SQL редакторе  или визуально (рис. 5). Для вызова визуального редактора создания домена необходимо нажать соответствующую пиктограмму  в главном окне утилиты IBExpert. В поле «Имя домена» задается имя создаваемого домена, в поле «Тип» выбирается тип данных домена. В поле «Длина» задается соответствующий параметр для таких типов данных, как CHAR, NUMERIC, DECIMAL, VARCHAR и BLOB. Для типов NUMERIC и DECIMAL необходимо также задать точность в соответствующем поле.

 

 

 

 

 

 

После заполнения всех полей следует нажать пиктограмму компиляции, что приведет к выполнению операции создания домена. В появившемся окне (рис. 6) будет приведен оператор создания домена. Если он верный, то следует нажать кнопку «Commit», чтобы подтвердить выполнение операции. В противном случае нужно нажать кнопку «Откатить». Этот же диалог подтверждения операций создания, изменения и удаления объектов будет появляться при работе с таблицами, представлениями, хранимыми процедурами и т.д.

 

Создание новой таблицы БД

Создать таблицу БД в IBExpert можно с помощью соответствующего визуального редактора, который вызывается при нажатии на пиктограмме  в главном окне утилиты IBExpert, или при вызове «Новая таблица» пункта «База данных» (рис.1).

На рис. 7 изображено окно для создания новой таблицы, где в самом верхнем поле ввода нужно ввести имя создаваемой таблицы. После этого по одному ввести все поля таблицы. В поле «Название» вводится название столбца, в поле «Тип» указывается тип данных. Если поле таблицы планируется определить на каком-либо домене, то имя одного из созданных доменов нужно выбрать в поле «Домен». Для тех атрибутов таблицы, которые обязательно должны быть объявлены как NOT NULL, в поле «Не пусто» следует поставить маркер, два раза щелкнув левой кнопкой мыши по этому полю.

 

 

Чтобы какой-либо атрибут сделать первичным ключом, необходимо два раза щелкнуть левой кнопкой мыши по полю «ПК». В таблице можно задавать несколько первичных ключей аналогичным образом. После того как заданы все поля новой таблицы, следует щелкнуть мышью по пиктограмме  для компиляции. После компиляции на экране появится окно, содержащее оператор создания таблицы. Для непосредственного создания таблицы следует нажать кнопку «Commit». На рис.8 изображено окно просмотра/редактирования уже созданной таблицы, которое появляется после ее создания, и вызывается из инспектора объектов при редактировании таблицы.

Закладка «Ограничения» (рис. 9) позволяет задать первичные и внешние ключи. Для создания внешнего ключа необходимо выбрать закладку «Внешние ключи», нажать клавишу «Insert» или щелкнуть правой кнопкой мыши по основному полю окна и выбрать пункт «New foreign key». В поле «Название» автоматически устанавливается уникальное имя ключа. Атрибут «На поле» задает имя поля данной таблицы, которое нужно сделать внешним ключом. В поле «Внешняя таблица» задается имя таблицы, с которой данная связана внешним ключом.

 

 

Атрибуты «Правило обновления» и «Правило удаления» могут принимать следующие значения, которые определяют действия, выполняемые автоматически над значениями внешних ключей при изменении соответствующих им первичных ключей:

-      NO ACTION – запретить изменение внешнего ключа при изменении соответствующего первичного ключа;

-      CASCADE – каскадное обновление/удаление значений внешнего ключа при соответствующем изменении первичного ключа;

-      SET NULL – установить в NULL значения внешнего ключа при изменении соответствующего первичного ключа;

-      SET DEFAULT – при изменении соответствующего первичного ключа установить для поля внешнего ключа значение по умолчанию, заданное для этого поля при его создании.

 

 

После задания всех параметров следует нажать пиктограмму компиляции и подтвердить выполнение транзакции кнопкой «Commit» в появившемся окне.

Для ввода данных в таблицу необходимо выбрать закладку «Данные», вид которой представлен на рис. 10. Находясь на этой закладке, можно редактировать записи таблицы. Так, например, добавление новой записи в таблицу осуществляется нажатием клавиши <Insert> или пиктограммы . После ввода или редактирования данных нужно с помощью соответствующих пиктограмм подтвердить транзакцию. Закладка «Зависимости» отображает те объекты, от которых зависит данная таблица, и те объекты, которые зависят от данной таблицы. Закладка «Скрипт» предназначена для просмотра текста всех операторов, использованных для создания таблицы, ее первичных и внешних ключей и т.п.

 

 

Работа в SQL-редакторе

В IBExpert используется SQL-редактор для выполнения различных SQL-операторов и просмотра результатов их выполнения (рис. 11).

 

Редактор вызывается при выборе пункта «SQL-редактор» меню «Инструменты» (рис. 1). В окно запроса на закладке «Редактор» вводится один оператор, который выполняется при нажатии клавиши <F9>. Если SQL-оператор произвел какие-либо изменения в БД и эти изменения нужно зафиксировать, то следует подтвердить транзакцию, нажав на соответствующую пиктограмму.

При выполнении запроса на выборку данных на экране появятся результаты, возвращаемые запросом. На закладке «История запросов» приведены все выполненные ранее запросы. Щелкнув два раза левой кнопкой мыши по нужному запросу в списке,  можно поместить его (с замещением текущего) в SQL-редактор, а затем выполнить.

 

Работа в редакторе скриптов

Для выполнения последовательности из нескольких SQL-операторов, называемой скриптом, следует воспользоваться «Редактором скриптов», который вызывается нажатием пиктограммы  в главном окне утилиты IBExpert, или выполнением пункта «Редактор скриптов» из меню «Инструменты» (рис. 1). На рис. 12 представлено окно редактора с загруженным текстом скрипта.

 

БД для выполнения скрипта

Скрипт представляет собой текстовый файл с расширением *.sql. Все операторы скрипта выполняются последовательно в том порядке, в котором они перечислены, и должны быть отделены друг от друга разделителем (точкой с запятой или тем, который задан с помощью оператора SET TERM). Скрипт может содержать операторы по созданию всех объектов БД, т.е. фактически являться моделью БД. В общем случае скрипт содержит операторы модификации БД (язык DDL), операторы изменения данных (язык DML) и операторы фиксации/отмены транзакций. Операторы выборки данных в скрипте использовать нельзя, т.к. отсутствует механизм обработки возвращаемых значений.

Каждый скрипт может содержать подключение к БД, которое производится с помощью оператора CONNECT, имеющего следующий формат:

CONNECT "диск:\путь\имя_файла_БД" USER

"имя_пользователя" PASSWORD "пароль";.

Для автоматической записи данного оператора в окне редактора скриптов следует выбрать в меню «Скрипт» пункт «Добавить оператор CONNECT в начало скрипта». В появившемся окне нужно выбрать БД, для которой будет использоваться скрипт.

Текстовый файл скрипта также может содержать команду на создание БД, которая имеет следующий синтаксис:

CREATE DATABASE "диск:\путь\имя_файла_БД"

USER "имя_пользователя"

PASSWORD "пароль" [DEFAULT CHARACTER SET WIN1251];.