Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ud.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
821.25 Кб
Скачать

6.4.11 Защита (Security)

SQL защита (securite) управляется на уровне таблицы привилегий доступа - списка операций, которые разрешены пользователю над данной таблицей или видом. Инструкция GRANT назначает привилегии доступа к таблице или виду конкретным пользователям или процедурам. Инструкция REVOKE удаляет предварительно предоставленные привилегии доступа.

6.5 Операторы sql для работы с объектами бд

6.5.1 Представления

Представление (view) это виртуальная таблица, которая не сохранена физически в базе данных, но ведет себя точно также как "реальная" таблица. Вид может содержать данные из одной или более таблиц или других видов и используется для хранения часто используемых запросов (queries) или множества запросов в базе данных.

Создание

CREATE VIEW имя_представления [(имя_столбца [,имя_столбца ...])]

AS <select_выражение> [WITH CHECK OPTION];

имя_представления - имя для вида. Должно быть уникальным среди всех имен видов, таблиц и процедур в базе данных.

имя_столбца имена столбцов вида. Имена столбцов должны быть уникальны среди всех имен столбцов в виде. Требуется, если вид содержит столбцы, основанные на выражении; иначе факультативен. По умолчанию, имена столбцов берутся из базовой таблицы.

<select_выражение> select_выражение.

WITH CHECK OPTION – предотвращает использование представления совместно с операциями INSERT и UPDATE.

Особенности использования:

1. Если в представлении не указаны столбцы – то они берутся из <select_выражение>.

2. Количество <имя_столбца> указано явно, то они должны совпадать со столбцами из <select_выражение>

3. В <select_выражение> не могут использоваться сортировки ORDER BY

Обратите внимание: Любые столбцы, используемые в значении выражения, должны присутствовать раньше чем выражение может быть определено.

Изменение

нельзя

Удаление

DROP VIEW имя_представления;

имя_представления Имя существующего представления, для удаления

Примеры

CREATE VIEW "A_UNI_B" (

"ID_SOTR",

"FAM",

"ZAP"

) AS

select * from a

union

select * from b;

6.5.2 Хранимые процедуры

Хранимые процедуры (stored procedure) – это отдельные программы, написанные на языке SQL процедур и триггеров InterBase, который является расширением SQL. Сохраненные процедуры являются частью метаданных базы данных. Сохраненные процедуры могут получать входные параметры, возвращать значения приложению и могут быть вызваны явно из приложения или подстановкой вместо имени таблицы в инструкции SELECT.

Сохраненные процедуры обеспечивают следующие возможности:

1. Модульный проект: сохраненные процедуры могут быть общими для приложений, которые обращаются к той же самой базе данных, что позволяет избегать повторяющегося кода, и уменьшает размер приложений.

2. Упрощают сопровождение приложений: при обновлении процедур, изменения автоматически отражаются во всех приложениях, которые используют их без необходимости их повторной компиляции и сборки.

3. Улучшают эффективность работы: Особенно для удаленных клиентов. Сохраненные процедуры выполняются сервером, а не клиентом, что снижает сетевой трафик.

Важно: Т.к. каждая инструкция в теле сохраненной процедуры должна завершатся точкой с запятой, вы должны определить другой символ для завершения инструкции CREATE PROCEDURE в SQL. Используйте SET TERM пред CREATE PROCEDURE чтобы определить терминатор отличный от точки с запятой. После инструкции CREATE PROCEDURE, включите SET TERM, что бы изменить терминатор обратно к точке с запятой

Создание

CREATE PROCEDURE имя_проц

[(имя_параметра <тип> [,имя_параметра <тип> ...])]

[RETURNS имя_параметра <тип> [,имя_параметра <тип> ...])]

AS <тело_процедуры> [terminator]

имя_проц Имя процедуры.

param <datatype> Входные параметры, используемые процедурой и тип данных

RETURNS param <datatype> Выходные параметры, используемые процедурой. Допустимые типы данных перечислены в Типы данных.

<тело_процедуры> Тело процедуры. Включает: ·Объявления локальных переменных. · Блок инструкций на языке процедур и триггеров.

terminator Терминатор, определенный для SQL командой SET TERM, указывающий конец тела процедуры

Изменение

ALTER PROCEDURE имя_проц

[(имя_параметра <тип> [,(имя_параметра <тип> ...])]

[RETURNS ((имя_параметра <тип> [,(имя_параметра <тип> ...])]

AS <тело_процедуры> [terminator]

Удаление

DROP PROCEDURE имя_проц;

Примеры

SET TERM ^ ;

CREATE PROCEDURE "MyProc"(

"ID" INTEGER)

AS

BEGIN EXIT; END ^

ALTER PROCEDURE "MyProc"

( "LID" INTEGER,

"LFAM" CHAR(30),

"LYEARS" INTEGER,

"LSTATUS" CHAR(10))

AS

BEGIN

INSERT INTO sotrudnik(id_sotr, fam, years, status)

VALUES(:lid, :lfam, :lyears, :lstatus);

END^

SET TERM ; ^

Чтобы выполнить эту процедуру необходимо выполнить команду:

execute procedure MyProc(123, 'Ленин', 35, 'Вождь');

commit;

А теперь удалим процедуру:

DROP PROCEDURE MyProc;

Еще один пример в котором используются циклы FOR:

CREATE PROCEDURE “SET_DEF_USER”(

“NewDefValue” CHAR(10),

“OldDefValue” CHAR(10))

RETURNS (

“Number” INTEGER)

AS

DECLARE VARIABLE Count INTEGER;

DECLARE VARIABLE TempID INTEGER;

BEGIN

:Count = 0;

FOR

SELECT “Status”, “ID_Status”

FROM “StatusTable”

WHERE “Status” = :OldDefValue

INTO :NewDefValue, :TempID

DO

BEGIN

UPDATE “StatusTable”

SET “Status” = :NewDefValue

WHERE “ID” = :TempID;

:Count = :Count + 1;

END;

:Number = :Count;

END^

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]