
- •Работа с бд в архитектуре ”клиент-сервер”
- •2.Работа с утилитой bde Administrator
- •2.1. Назначение bde Administrator
- •2.2. Создание псевдонима бд
- •3. Работа с утилитой Windows Interactive sql (wisql)
- •3.1. Создание новой бд
- •3.2. Установка соединения
- •3.3. Создание таблиц бд
- •3.4. Просмотр структуры компонентов базы данных
- •4.2. Создание триггера
- •4.3. Значения old и new
- •4.4. Обеспечение каскадных воздействий
- •5. Работа с хранимыми процедурами
- •5.1. Понятие хранимой процедуры
- •5.2. Создание хранимой процедуры
- •6. Использование генераторов
- •7.3. Сбор статистики о бд
- •7.3.1. Статистические данные непосредственно о бд
- •7.3.2. Анализ бд
- •7.4. Регистрация пользователей
- •7.5. Поддержка базы данных
- •Validate record fragments - проверять фрагменты записей
- •8.Задание к лабораторной работе
- •Работа с утилитой Windows Interactive sql (wisql)
- •9. Работа с утилитой InterBase Server Manager.
- •Приложение 1
- •Формат sql-операторов (субд InterBase)
- •База данных
- •Создание базы данных
- •Определение типа данных
- •Домены Создание домена
- •Ограничения, накладываемые на значения полей, ассоциированных с доменом
- •Определение ограничения внешнего ключа и ссылочной целостности с родительской таблицей
- •Удаление столбца (столбцов) из таблицы бд
- •Обращение к хранимой процедуре (утилита wisql)
- •Оператор выбора select
- •Принудительная выдача выходных параметров (только хранимые процедуры)
- •Отъем привилегий
- •Приложение 2 Пример Script-файла
Отъем привилегий
REVOKE [GRANT OPTION FOR] {
{ALL [PRIVILEGES] ! SELECT ! DELETE ! INSERT ! UPDATE
[(столбец [, столбец ...])]} ON [TABLE] {ИмяТаблицы ! ИмяПросмотра} FROM {<объект> ! <список_пользователей>} ! EXECUTE ON PROCEDURE ИмяПроцедуры FROM {<объект> I < список пользователей >}
Приложение 2 Пример Script-файла
Рассмотрим Script-файл, осуществляющий создание БД и в ней нескольких таблиц, процедур и триггеров. Перед созданием БД ее старая версия уничтожается и выполняется оператор формата
SET NAMES НаборСимволов;
а именно SET NAMES WINI1251;
Содержимое Script-файла:
Set names WINI1251;
Connect “d:\book\ib_sklad\ib_sklad.gdb” USER “SYSDBA”
PASSWORD “masterkey”;
Drop database;
CREATE DATABASE “d:\book\ib_sklad\ib_sklad.gdb” USER “SYSDBA”
PASSWORD "masterkey"
default character set WIN1251;
connect "d:\book\ib_sklad\ib_skiad.gdb" USER "SYSDBA" PASSWORD "masterkey";
CREATE TABLE POKUPATELI (
POKUP VARCHAR (20) NOT NULL,
GOROD VARCHAR(12) COLLATE,
ADRES VARCHAR(20),
PRIMARY KEY (POKUP) ) ;
CREATE TABLE TOVARY(
TOVAR VARCHAR(20) NOT NULL,
ED_IZM VARCHAR(IO) NOT NULL ,
ZENA INTEGER NOT NULL,
PRIMARY KEY (TOVAR)
);
CREATE TABLE RASHOD(
N_RASH INTEGER NOT NULL,
DAT_RASH DATE NOT NULL,
KOLVO INTEGER NOT NULL,
TOVAR VARCHAR(20) NOT NULL ,
POKUP VARCHAR(20),
FOREIGN KEY (POKUP) REFERENCES POKUPATELI,
FOREIGN KEY (TOVAR) REFERENCES TOVARY,
);
SET TERM ###;
CREATE PROCEDURE FIND_MAX_KOLVO (IN_TOVAR VARCHAR(20))
RETURNS (MAX_KOLVO INTEGER) AS
BEGIN
SELECT MAX (KOLVO)
FROM RASHOD
INTO : MAX_KOLVO;
SUSPEND;
END ###
CREATE PROCEDURE POK_LIST (IN_TOVAR VARCHAR(20))
RETURN (POK VARCHAR(20)) AS
DECLARE VARIABLE AVG_KOLVO INTEGER;
BEGIN
SELECT AVG(KOLVO)
FROM RASHOD
WHERE TOVAR = : IN_TOVAR
INTO : AVG_KOLVO;
FOR SELECT POKUP
FROM RASHOD
WHERE KOLVO>: AVG_KOLVO
INTO : POK
DO
BEGIN
IF (:POK IS NULL) THEN
POK=”Покупатель не указан”;
SUSPEND;
END
END ###'
CREATE TABLE TOVARY_LOG(
DAT_IZM DATE
DEISTV CHAR(3),
OLD_TOVAR VARCHAR(20),
NEW_TOVAR VARCHAR(20)
) ###
CREATE TRIGGER TOVARY_ADD_LOG FOR TOVARY
AFTER INSERT
AS
BEGIN
INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR,
NEW_TOVAR)
VALUES ("NOW",”ADD”, “”, NEW.TOVAR);
END ###
CREATE TRIGGER TOVARY_UPD_LOG FOR TOVARY
AFTER UPDATE
AS
BEGIN
INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR,
NEW_TOVAR)
VALUES ("NOW", "UPD", OLD. TOVAR, NEW .TOVAR) ;
END ###
CREATE TRIGGER TOVARY_DEL_LOG FOR TOVARY
ACTIVE
AFTER UPDATE
AS
BEGIN
INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR,
NEW_TOVAR)
VALUES ("NOW", "DEL",OLD.TOVAR,"") ;
SET TERM ; ###
COMMIT