Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭКТ / БДлаб8.doc
Скачиваний:
25
Добавлен:
16.04.2013
Размер:
131.07 Кб
Скачать

Утилита wisql

Утилита WISQL предназначена для работы с SQL-сервером InterBase и позволяет:

  • подключаться к БД на локальном или удаленном сервере;

  • выполнять любые запросы на языке SQL к БД и просматривать результаты их выполнения;

  • получать информацию о структуре БД.

В отличие от других утилит, в частности, от SQL Explorer, она использует собственный механизм доступа к БД, поэтому может работать на компьютерах без BDE и не использует псевдонимы БД. Запуск утилиты осуществляется из стартового меню Windows командой Пуск | Программы | InterBase Client 5.1 | InterBase Windows ISQL.

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

Для создания БД необходимо использовать команду File | Create Database главного меню утилиты и в диалоговом окне Create Database задать параметры БД (рис.8), которыми являются:

  1. Location Info - информация о местонахождении БД: Local Server - данный компьютер; Remote Server - удаленный компьютер. В последнем случае дополнительно указываются имя сервера (Server) и сетевой протокол (Network Protocol);

  2. Database Name - определяет имя БД и полный путь к ней (Database), имя пользователя (User Name) и пароль (Password). Для локального сервера Interbase имя пользователя SYSDBA, а пароль - masterkey;

  3. Database Options -параметры создаваемой БД, предусмотренные в операторе CREATE DATABASE языка SQL. В частности, параметром DEFAULT CHARACTER SET указывается принимаемый по умолчанию набор символов WIN1251, используемый для представления русскоязычных текстов. Этот же набор символов следует установить для текущей сессии работы сервера с помощью команды Session | Advanced Settings.

Для подключения к БД используется команда File | Connect to Database, активизирующая диалоговое окно (рис.9), аналогичное окну для создания БД, в котором задаются те же параметры.

Чтобы отключиться от БД, следует использовать команду FileDisconnect from Database.

Просмотр метаданных

В метаданных отражена информация о структуре компонентов БД. Просмотр структуры компонентов БД, к которой подключился пользователь, осуществляется с помощью команды Metadata | Show. В активизированном этой командой диалоговом окне View Information из списка View Information On выбирается компонент БД, о котором необходимо получить информацию (рис.10).

Например, чтобы получить информацию о всех индексах, созданных в БД, нужно в выпадающем списке выбрать компонент Index, поле Object Name оставить незаполненным и нажать кнопку "OK". В результате в нижней области окна утилиты появится список индексов, созданных в БД (рис.11). Ввод в поле Object Name имени конкретной таблицы приведет к выводу индексов, созданных для указанной таблицы.

Для получения информации о БД в целом, а также о конкретной таблице или представлении (View) предназначены команды Metadata | Extract Database, Metadata | Extract Table, Metadata | Extract View.

Выполнение запросов к базе данных

П

ослеподключения к БД можно направлять к ней запросы, записанные на языке SQL. SQL-оператор набирается в верхней области окна утилиты (рис.12). Для выполнения оператора нажимается кнопка . Результаты выполнения выводятся в нижнюю область окна утилиты и содержат продублированный текст набранного оператора и, в случае его правильности, таблицу результатов запроса. Текст набранного оператора может завершаться точкой с запятой, но при использовании утилиты WISQL это делать необязательно. Для просмотра текста введенных операторов и выбора оператора для повторного выполнения или исправления предназначены кнопки и .

М

огут использоваться любые оператора языкаSQL, соответствующие синтаксису InterBase, начиная с операторов определения метаданных (CREATE TABLE, CREATE TRIGGER и т.д.) и кончая операторами чтения (SELECT) и изменения данных (INSERT, UPDATE, DELETE).

Подтверждение и отмена изменений в БД

При запуске утилиты WISQL стартует неявная транзакция, поэтому результаты выполнения SQL-операторов не запоминаются до поступления подтверждения транзакции.

Подтверждение может задаваться оператором COMMIT, который автоматически генерируется при выборе команды File | Commit Work. При этом запрашивается подтверждение на фиксацию изменений, произведенных выполненными SQL-операторами. Подтверждение запрашивается также при отключении от БД, которое инициируется командой File | Disconnect from Database, или при завершении работы с утилитой.

Для операторов определения метаданных подтверждение по умолчанию происходит автоматически. Чтобы установить режим "ручного" подтверждения и иметь возможность отмены изменений, произведенных этими операторами, нужно воспользоваться командой Session | Basic Settings и в диалоговом окне Basic ISQL Set Options отключить режим Auto Commit DDL.

При отключении от БД или при завершении работы с утилитой можно отменить изменения, нажав кнопку "Нет" в диалоговом окне Commit Work. Изменения можно отменить в любой момент сессии оператором ROLLBACK, который автоматически генерируется при выборе команды File | Rollback Work. В этих случаях происходит откат транзакции.

После подтверждения или отката транзакции неявно стартует новая транзакция. Явный старт транзакции задается оператором SET TRANSACTION.

Выполнение SQL-скриптов

Текст SQL-операторов можно быть помещен в файл и затем выполнен с помощью команды File | Run an ISQL Script. Такой файл, имеющий по умолчанию расширение sql, называется SQL-скриптом и может использоваться в тех случаях, когда необходимо выполнять длинную последовательность SQL-операторов, например, задающих создание таблиц БД. В этом случае операторы для создания БД, таблиц, триггеров, процедур и т.д. помещаются в один SQL-скрипт.

SQL-скрипт может создаваться с помощью любого текстового редактора, позволяющего сохранять текст в коде ASCII, и должен обязательно начинаться операторами CREATE DATABASE или CONNECT, в которых указывается имя пользователя и пароль. Например, для локального сервера эти операторы могу быть такими:

CREATE DATABASE "D:\DELPHI\TEST_SCRIPT.GDB"

USER "SYSDBA" PASSWORD "masterkey";

CONNECT "D:\DELPHI\ZGRAD.GDB"

USER "SYSDBA" PASSWORD "masterkey";

SQL-скрипт может содержать любые SQL-операторы, а также команды SET утилиты WISQL, заканчивающиеся точкой с запятой или разделителем, который задан командой SET TERM. Допускается включать в SQL-скрипт комментарии, представляющие собой последовательность символов, начинающуюся парой символов "/*" и заканчивающуюся парой символов "*/".

Если в SQL-скрипте задано создание хранимых процедур и триггеров, то в нем необходимо предусмотреть команды SET TERM для изменения разделителя SQL-операторов. Это связано с тем, что стандартным разделителем SQL-опера­торов является точка с запятой. При ручном вводе SQL-опера­торов в утилите WISQL этот разделитель можно не указывать, но в SQL-скрипте разделитель обязателен. Поскольку в теле хранимых процедур и триггеров SQL-опера­торы разделяются точкой с запятой, то в SQL-скрипте для обозначения границ хранимых процедур и триггеров приходится использовать разделитель, отличный от точки с запятой. Поэтому перед SQL-опера­торами CREATE PROCEDURE или CREATE TRIGGER устанавливают новый разделитель, заканчивают им каждое определение хранимой процедуры или триггера, а затем восстанавливают старый разделитель. Например, приводимый ниже SQL-скрипт для БД Zgrad.gdb создает генератор уникальных номеров жителей PERSON_NOM с начальным значением 100, хранимую процедуру GET_NOM для вычисления текущего значения генератора, триггер bi_PERSON_trig для таблицы PERSON, присваивающего столбцу NOM уникальное значение при добавлении новой строки, а затем добавляет в таблицу PERSON строку с автоматически генерируемым уникальным номером жителя:

CONNECT "D:\DELPHI\ZGRAD.GDB"

USER "SYSDBA" PASSWORD "masterkey";

CREATE GENERATOR PERSON_NOM;

SET GENERATOR PERSON_NOM TO 100;

SET TERM @@@ ; /*Новым разделителем будет строка @@@ */

CREATE PROCEDURE GET_NOM RETURNS (NP INTEGER)

AS

BEGIN

NP=GEN_ID(PERSON_NOM,1); /*Каждое следующее значение*/

END @@@ /*генератора больше предыдующего на 1 */

CREATE TRIGGER bi_PERSON_trig FOR PERSON

ACTIVE

BEFORE INSERT

BEGIN

EXECUTE PROCEDURE GET_NOM RETURNING_VALUES NEW.NOM;

END @@@

SET TERM ; @@@ /*Разделителем будет опять ; */

INSERT PERSON (FIO,RDATE,POL,ADR)

VALUES ('Караваев Алексей Юрьевич','12-NOV-1960',

'М','Зеленоград, 1712-99');

COMMIT;

Каждая сессия работы с утилитой WISQL начинается с установленными по умолчанию режимами, которые могут быть проверены и изменены командой главного меню Session. SQL-скрипт может изменять эти режимы командами SET, но после окончания его выполнения автоматически восстанавливаются значения режимов, бывшие до начала выполнения. Таким образом, пользователь может установить необходимые ему режимы для непосредственной работы с утилитой WISQL, задавать в SQL-скрипте команды изменения режимов, требуемые для его выполнения, а после выполнения SQL-скрипта не заботиться об установки нужных пользователю режимов.

Соседние файлы в папке ЭКТ