- •ВВЕДЕНИЕ
- •Лабораторная работа №1
- •Лабораторная работа №3-4
- •Создание первичного ключа двумя способами
- •Создание суррогатных ключей с помощью последовательностей
- •Ввод данных
- •Создание связей
- •Создание индексов
- •Изменение структуры таблиц, контрольные ограничения
- •Ограничения на модификацию столбцов таблиц
- •Представления
- •Контрольные задания к л.р. № 3-4
- •Лабораторная работа №5-6
- •Логика приложения
- •Обработка файлов PL/SQL
- •Хранимые процедуры
- •Хранимая процедура Customer_Insert
- •Листинг 1. Процедура CustomerInsert
- •Хранимая процедура NewCustomerWithTransaction
- •Задания к лабораторной работе.
- •Триггеры
- •Пример предваряющего триггера
- •Пример завершающего триггера
- •Обработка исключений
- •Словарь данных
- •Дополнительный материал для самостоятельного изучения
- •Управление параллельной обработкой
- •Уровень изоляции «завершенное чтение»
- •Уровень изоляции «сериализуемость»
- •Уровень изоляции «только чтение»
- •Дополнительные замечания о блокировках
- •Oracle и безопасность
ALTER TABLE ARTIST ADD CONSTRAINT BDLimit CHECK (BirthDate BETWEEN 1400 AND 2100):
ALTER TABLE ARTIST ADD CONSTRAINT DDLimit CHECK (DeceasedDate BETWEEN 1400 AND 2100).
Выполним команды обновления:
UPDATE ARTIST SET BirthDate = 1870 WHERE Name = 'Miro': UPDATE ARTIST SET BirthDate = 1270 WHERE Name = 'Tobey':
Первое обновление пройдет успешно, а второе нарушит ограничение и поэтому не будет выполнено. Попробуйте запустить эти операторы и посмотрите, каковы будут результаты.
Представления
Важное ограничение SQL-представлений состоит в том, что они могут содержать не более одного многозначного пути.
Определим представление, соединяющее три таблицы, с наложенным условием на столбцы AcquisitionPrice и CustomerID. Этопредставления соединения–
онибазируются на соединениях. |
|
|
|
CREATE VIEW ExpensiveArt AS |
|
||
SELECT |
Name, Copy, Title |
|
|
FROM ARTIST, WORK, TRANSACTION |
|||
WHERE |
ARTIST.ArtistID |
= WORK.ArtistID AND |
|
WORK.WorkID |
= |
TRANSACTION.WorkID AND |
|
AcquisitionPrice |
> |
10000 AND |
CustomerID IS NULL;
Вообще говоря, представления, основанные на одной таблице, допускают обновление данных. Если это почему-либо нежелательно, вы можете создать представление только для чтения, добавив выражение WITH READ ONLY в конец определения представления. Так, выражение
CREATE VIEW V1 AS SELECT * FROM ARTIST WITH READ ONLY;
создаст представление, доступное только для чтения.
Иногда для обновления данных и представлении можно использовать SQLоператор UPDATE, но это возможно только в особых обстоятельствах и только
втом случае, если изменение затрагивает только одну таблицу.
Вобщем же случае оператор UPDATE не может использоваться для обновления данных о представлении. Для этих целей потребуется написать
30
специальный триггер, называемый замещающим триггером (триггер INSTEAD OF).
Контрольные задания к л.р. № 3-4
ОБЯЗАТЕЛЬНЫ ДЛЯ ВЫПОЛНЕНИЯ!!!
1.Вывести на экран информацию о таблицах пользователя
2.Вывести на экран информацию о структуре одной из таблиц
3.Вывести в отчет информацию физических атрибутах таблицы Artist
Ввести данные для следующих ситуаций:
4.На склад поступили репродукции картин 2-х русских художниках. Как минимум одно произведение - первого художника и два произведения -
второго. (Прошу обратить внимание, что требуются данные о реальных художниках!)
5.Сначала появился первый покупатель и приобрел картину первого художника. Затем появился другой покупатель и приобрел репродукции второго художника. Сделки были оформлены.
6.Внести данные в соответствующие таблицы «Вручную!!!», в том числе отобразить предпочтения покупателя к картинам определенных художников.
7.Последовательно отобразить СОДЕРЖИМОЕ ВСЕХ ТАБЛИЦ!!!
31