Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_KL_2010_14.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
28.97 Mб
Скачать

4.6.3.Оператор delete

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

Синтаксис оператора DELETE следующий

DELETE

FROM имя_табл

[WHERE условия_отбора]

В предложении FROM указывается таблица, содержащая строки, которые требуется удалить. В предложении WHERE указывается критерий отбора строк, которые должны быть удалены. Если условия отбора не задаются, то из таблицы удаляются все строки, однако это не означает, что удаляется вся таблица. Исходная таблица остается, но она остается пустой, незаполненной. Условия отбора в части WHERE имеют тот же вид, что и условия фильтрации в операторе SELECT.

Предположим, что некий сотрудник решил уволиться из компании. Вот инструкция DELETE, удаляющая, относящуюся к данному сотруднику строку из таблицы СОТРУДНИКИ

DELETE

FROM SLUZHASCHIE

WHERE FAMILY = ’Быков’ AND NAME = ‘Игорь’

В предложении WHERE может находиться встроенный запрос. Например, если нам надо удалить все заказы принятые уволенным сотрудником необходимо использовать условие отбора с встроенным запросом.

DELETE

FROM ZAKAZY

WHERE ID_SLZH = (SELECT ID_SLUZH

FROM SLUZHASCHIE

WHERE FAMILY = ’Быков’ AND NAME = ‘Игорь’)

Встроенный запрос находит идентификатор сотрудника с фамилией Быков и именем Игорь, а затем предложение WHERE отбирает заказы с данным идентификатором. Как видно из этого примера, встроенные запросы в инструкции DELETE играют важную роль, поскольку они позволяют удалять строки, основываясь на информации, содержащейся в других таблицах.

Глава 5.Dds – Средства администрирования баз данных

Поддержание целостности данных предполагает их защиту от случайного или намеренного искажения. Поэтому доступ к отдельным данным должен быть ограничен по соображениям их конфиденциальности. Все это требует ограничения прав доступа к данным различных групп пользователей. предоставление соответствующих прав и их изъятие реализуется следующими командами.

GRANT – предоставляет права доступа к специфицированным объектам данных со стороны указанных пользователей или других объектов базы;

REVOKE – ликвидирует права доступа к специфицированным объектам данных со стороны указанных пользователей или других объектов базы.

5.1.Назначение и ликвидация прав

5.1.1.Команда grant

Создание пользователя само по себе не дает ему никаких прав на доступ к объектам базы данных. Права доступа предоставляются командой GRANT.GRANT устанавливает права на объекты базы данных пользователям, ролям или другим объектам базы данных. Когда объект создается право на него имеет только его создатель и только он может выдавать права другим пользователям или объектам.

Для доступа к таблице пользователь или объект нуждается в правах на SELECT, INSERT, UPDATE, DELETE или REFERENCES. Для вызова процедуры в приложении пользователь должен иметь права на EXECUTE. Права могут быть даны всем пользователям опцией PUBLIC на месте списка пользователей.

Перечень прав приведен в нижеследующей таблице.

Права Позволяет пользователям .

ALL..........SELECT, INSERT, UPDATE, DELETE, EXECUTE, REFERENCES

SELECT.......Дает право выбирать строки из таблицы или просмотра

INSERT.......Дает право добавлять строки в таблицы или просмотры

UPDATE.......Дает право изменять строки в таблице или просмотре

DELETE.......Дает право удалять строки из таблицы или просмотра

EXECUTE......Дает право выполнять хранимую процедуру

REFERENCES...Дает право ссылаться при работе с FK на специфицированные столбцы

Чтобы показать, насколько гибкой является система безопасности сервера БД, приведем синтаксис команды предоставления прав:

GRANT{

<список прав>

ON [TABLE] {имяТаблицы | имяПросмотра}

TO {<объект> | <списокПользователей>} | <роль>

TO {PUBLIC | <списокРолей>}};

Здесь

<права> = {ALL [PRIVILEGES] | <списокПрав>} где

<списокПрав> = {

SELECT |

INSERT |

UPDATE [(столбец [,столбец ...])] |

REFERENCES [(столбец [,столбец ...])]

[,<списокПрав> ...]}

Это права на выполнение либо отдельных операций SELECT, DEL­E­TE, INSERT, UPDATE, REFERENCES, либо их комбинаций, либо всех – ALL. предоставление права REFERENCES означает возможность создавать ссылочную целостность таблиц (ограничения внешнего ключа FOREIGN KEY).

Далее в команде GRANT под <объект> понимают:

<объект> =

PROCEDURE имяПроцедуры |

TRIGGER имяТриггера |

VIEW имяПросмотра |

PUBLIC |

[,<объект> ...]

<списокПользователей> – это пользователи, которым предоставлены права на выполнение хранимых процедур, триггеров и просмотров.

<роль> – в системе безопасности InterBase-сервера пользователей можно объединять в группы. Например, на фирме есть служба, которая использует базы данных, но не может их удалять. То есть ее сотрудникам достаточно прав на выполнение операций SELECT, INSERT, UPDATE. В этом случае создаем роль SEL_INS_UP:

CREATE ROLE SEL_INS_UP

Предоставляем этой роли право на просмотр, вставку и изменение данных таблицы, например, Owner:

GRANT SELECT, INSERT, UPDATE ON Owner TO SEL_INS_UP

Назначаем эту роль каждому из сотрудников данной службы:

GRANT SEL_INS_UP TO <имяПользователя>

Использование роли позволяет, например, исключить возможность ошибки в случае зачисления в штат данной службы нового сотрудника. Как видите, для предоставления пользователю права доступа к таблице необходимо указать как минимум вид права доступа, имя таблицы и пользователя. Но не только администратор имеет полномочия назначать права. Если вы создаете таблицу или хранимую процедуру, то имеете к ней права доступа наравне с администратором. Подробнее роли будут рассмотрены в разделе 5.3.

При назначении прав доступа на операцию можно уточнить, значения каких столбцов может изменять пользователь. Допустим, что пользователь Petrov имеет право изменять цену на предоставление услуги. Предположим, что цена задается в столбце COST таблицы SERVICE. Тогда операция назначения прав пользователю Petrov выглядит следующим образом:

GRANT SELECT, UPDATE (COST) ON SERVICE TO Petrov

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