[27.04.11] Лекция №10 (Лекции по банкам данных)
Описание файла
Файл "[27.04.11] Лекция №10" внутри архива находится в следующих папках: Лекции по банкам данных, [drafts] Банки данных, 11 - [27.04.11] Лекция №10. Документ из архива "Лекции по банкам данных", который расположен в категории "". Всё это находится в предмете "банки данных" из 6 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "банки данных" в общих файлах.
Онлайн просмотр документа "[27.04.11] Лекция №10"
Текст из документа "[27.04.11] Лекция №10"
Лекция №10 [27.04.11]
Транзакции
Транзакция – совокупность операторов, выполняющаяся как одно неделимое целое. Чтобы когда одновременно несколько пользователей вносят изменения не наломать дров. Каждый вносит изменения у себя локально, в системных буферах, а по команде конца транзакции все изменения вносятся разом.
Оператор конца текущей транзакции: COMMIT
Оператор отката (отмена транзакции): ROLLBACK
Оператор контрольной точки: SAVEPOINT
Оператор наделениям правами: GRANT
Оператор отмены прав: REVOKE
Использование контрольных точек:
INSERT …………………
UPDATE …………………
DELETE …………………
SAVEPOINT a1.
UPDATE …………………
SELECT …………………
SELECT …………………
UPDATE ………………… -- а вот тут у нас ошибка, например, надо откатить
DELETE …………………
SAVEPOINT a2.
SELECT …………………
SELECT …………………
ROLLBACK TO SAVEPOINT a1. -- вот мы откатили на контрольную точку a1
Создать пользователя с логином ivanov и паролем spec:
CREATE USER ivanov IDENTIFIED BY spec.
Разрешить пользователям Иванову и Петрову создавать таблицы и представления:
GRANT CREATE TABLE, CREATE VIEW TO ivanov, petrov.
Разрешить Козлову чтение таблицы Покупатели:
GRANT SELECT ON customer TO kozlov.
Администратор предоставляет другому пользователю право назначения полномочий на таблицу Покупатели:
GRANT SELECT, INSERT, UPDATE, DELETE ON customer TO ivanov WITH GRANT OPTION.
Администратор даёт Петрову права на подключение к базе данных:
GRANT CREATE SESSION TO petrov.
Роль (профиль) пользователей хранит набор прав:
CREATE ROLE semiadmin.
GRANT SELECT, INSERT, UPDATE, DELETE
ON customer
TO semiadmin.
GRANT SELECT, INSERT, UPDATE, DELETE
ON orders
TO semiadmin.
GRANT SELECT, INSERT, UPDATE, DELETE
ON item
TO semiadmin.
GRANT SELECT, INSERT, UPDATE, DELETE
ON stock
TO semiadmin.
COMMIT.
Теперь созданную роль (профиль) можно назначить Иванову:
GRANT ROLE semiadmin TO ivanov.
Роль можно присваивать к другой роли, тогда гранты объединятся, дополнятся.
Запретить Петрову создавать таблицы:
REVOKE CREATE TABLE FROM ivanov.
Пользователю Петрову отменить полномочия на ввод данных в таблицу Покупатели:
REVOKE INSERT ON customer FROM petrov.
А Козлову вообще всё запретить:
REVOKE ALL FROM kozlov.
А у Иванова отнять все права только на таблицу Покупатели:
REVOKE ALL ON customer FROM ivanov.
Функции
Определить число покупателей (сколько строк в таблице):
SELECT COUNT(*) FROM customer.
Ввести в заказ сегодняшнюю дату:
INSERT INTO orders(ID, customerID, orderdata) VALUES (34, 515, SYSDATA).
Для заказа №32 подсчитать общую сумму:
SELECT SUM(quabtity * unitprice)
FROM item, stock
WHERE ordered=32 AND item.stockID=stockID.
На экран после такого выведет вот что:
SUM(quabtity * unitprice) |
100500 |
Рассчитать средний оклад кассиров:
SELECT AVG(oklad) FROM slyjashie WHERE doljnost=’кассир’.
Для всех служащих в магазине №5 рассчитать полный доход, состоящий из оклада и комиссионых:
SELECT fio, oklad + komissija FROM slyjashie WHERE magazine=5.
Выдаст вот так:
fio | oklad + komissija |
Иванов Иван Иванович | 100500 |
Петров Пётр Петрович | 500100 |
Сидоров Сидр Сидорович | 500600 |
Изменение структуры таблицы
Добавить к таблице Покупатели новый столбец для второго факса (купили новые вместо сгоревших, а тут ещё и сгоревшие починили):
ALTER TABLE customer ADD (fax2 VARCHAR2(20)).
Модифицировать (тип значения) столбец в таблице Покупатель (длиннее поле телефона):
ALTER TABLE customer MODIFY (phone VARCHAR2(22)).
Удаление таблицы, не имеющее ссылок на другие таблицы:
DROP TABLE stock.
Удаление таблицы, имеющей ссылки на другие таблицы:
DROP TABLE orders CASCADE CONSTRAINTS.
Создание представления
Нужны чтобы юзвери не поломали оригинальные таблицы. Вместо таблиц работают с представлениями. В одной базе данных не должно быть представлений с одинаковыми именами.
CREATE VIEW имя представления AS (запрос SELECT)