Сетевые базы данных
Лабораторные работы
назад

Лабораторные работы в формате Microsoft Word



Методические указания к лабораторным работам

Лабораторная работа 1

Лабораторная работа 2

Лабораторная работа 3

Лабораторная работа 4

Лабораторная работа 5


 

Методические указания к лабораторным работам

Методические указания к лабораторным работам содержат следующие разделы:

1. Требования к оформлению отчета

2. Ввод, редактирование и выполнение программ в среде Oracle 10g XE

3. Приложения.

3.1 Элементы управления рабочих окон Oracle 10g XE

3.2 Основные управляющие клавиши

3.3 Список наиболее распространенных ошибок компиляции

Прежде, чем приступать к выполнению лабораторных работ рекомендую:

- прочитать материал, изложенный в п.10 (Интегрированная среда Oracle 10g XE) конспекта лекций для ознакомления с работой в среде ТР;

- изучить материал, изложенный в п.1 - 2 включительно конспекта лекций, выполнив все предложенные примеры;

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

 

1. Требования к оформлению отчета

Для проверки лабораторной работы необходимо представить следующее:

  1. Текст задания ( с данными своего варианта);
  2. Текст программы (файл с расширением .sql , содержащий программу на SQL или PL/SQL);
  3. Результат ее работы (т.е. все данные, которые выводятся на экран). Результаты можно либо набрать от руки, либо, используя п. 9 конспекта лекций, записать их в отдельный текстовый файл.

!!! Номер варианта лабораторной работы определяется по последней цифре пароля

Если программа написана в соответствии с заданием, в ней нет ошибок, и получен правильный результат ее работы, то вы получаете зачет по данной лабораторной работе. В противном случае работа отправляется вам на доработку.

2. Ввод, редактирование и выполнение программ в среде Oracle 10g XE

Рабочее окно Oracle 10g XE, которое будет использоваться при выполнении лабораторных работ, - это окно SQL Commands. Оно представляет собой текстовый редактор, используемый для интерактивного создания и выполнения команд SQL и PL/SQL. Вид окна показан на рис. 1.

Рис.1. Окно SQL Commands

Окно состоит из 3-х панелей, каждая из которых представлена ниже. Рассмотрены назначения панелей и размещенных на них управляющих элементов. Описание управляющих элементов также приведено в приложениях.

2.1. Навигационная панель

Home > SQL > SQL Commands

Рис.2. Навигационная панель окна SQL Commands

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

 

2.2. Панель ввода

Под навигационной панелью находится панель ввода (Input pane), которая служит для ввода команд SQL и текста программных блоков PL/SQL (см. рис. 3).

Рис.3. Панель ввода окна SQL Commands

Панель ввода содержит несколько элементов управления над полем ввода команд. Первый из них – поле установки флажка (check-бокс) Autocommit (автофиксация). Если флажок установлен, то любая команда SQL или блок PL/SQL выполняются в рамках своей собственной транзакции, которая автоматически фиксируется, т.е. результаты сразу сохраняются в базе данных (БД). Если флажок не установлен, то можно использовать SQL-команды COMMIT или ROLLBACK для соответственно сохранения результатов в БД или их отмены.

Поле Display (отобразить) позволяет указывать количество строк вывода результата в панели вывода, чтобы не выводить все результирующие строки (при их большом количестве).

Кнопка Save (сохранить) позволяет запомнить набранные в панели ввода команды под указанным именем. Используя это имя, можно позднее загрузить сохраненные команды в поле ввода, не набирая их снова вручную.

Кнопка Run (запустить) служит для запуска на выполнение команд, введенных в поле ввода.

2.3. Панель вывода

Самая нижняя панель – это панель вывода результатов (Output pane) выполнения команд и программ.

Рис.4. Панель вывода окна SQL Commands

На рисунке 4 показан начальный вид панели вывода с надписью-подсказкой Enter SQL statement or PL/SQL command and click Run to see the results (Введите команду SQL или программу на PL/SQL и щелкните по кнопке Run, чтобы увидеть результат). Над полем, содержащим эту надпись, расположена горизонтальная линейка меню. Первый пункт меню – Result – выбран изначально (по умолчанию),, что и обеспечивает вывод результатов выполнения команд при нажатии кнопки Run на панели ввода.

Пункт Explain (объяснять) дает возможность отобразить информацию о механизме выполнения команд. Такого рода информация может быть использована для настройки режима выполнения с целью повышения его эффективности.

Пункт Describe (описывать) позволяет получить описание объекта базы данных. Например, указав имя таблицы, можно увидеть список ее полей с дополнительной информацией о них.

Пункт Saved SQL (запомненные команды SQL) используется для выбора ранее запомненных команд (смотри описание кнопки Save панели ввода).

Пункт History (история) позволяет просмотреть всю историю выполнения команд SQL. В отображаемом списке ранее выполненных команд можно выбрать любую их них, щелкнув мышкой по команде. Выбранная таким образом команда автоматически помещается в поле ввода, и готова к выполнению по кнопке Run.

2.4. Работа с текстовым редактором SQL Commands

Ввод текста команд SQL и программы PL/SQL.

В окне редактора пользователь построчно вводит команды или операторы программы (описание клавиш и команд, необходимых при вводе программы, см. в п.3.2). После набора каждой строки следует нажимать клавишу Enter.

Набранные команды SQL или программы PL/SQL сохраняются в буфере текстового редактора. Для доступа к содержимому буфера необходимо использовать пункт History меню панели вывода (описание органов управления панелей ввода и вывода см. в 3.1).

 

Выполнение команд SQL и программ PL/SQL

Запуск команд и программ на выполнение осуществляется нажатием кнопки Run на панели ввода.

Если во время выполнения программы обнаружена ошибка, происходит следующее: работа прерывается, на панели вывода появляется сообщение об ошибке. В этом случае необходимо:

После выполнения команда/программы полученные результаты отображаются в поле вывода.

Работа с окнами редактора Oracle 10g XE.

I. Чтобы открыть “чистое” окно для ввода новой команда или программы необходимо выполнить одно из следующих действий:

· на навигационной панели (см. п.2.1) щелкнуть по пункту SQL, а затем вновь выбрать пиктограмму “SQL Commands” ;

· щелкнуть правой кнопкой мышки по полю ввода на панели ввода, выбрать в появившемся контекстном меню команду “выделить все”, нажать клавишу Delete;

· выделить мышкой текст на панели ввода, нажать клавишу Delete.

II. Чтобы скопировать текст команды или программы, выполнявшихся ранее (в том числе и в предыдущих сеансах работы) необходимо выполнить следующие действия:

· на панели вывода выбрать в меню пункт History;

· в появившемся в поле вывода перечне ранее выполнявшихся команд щелкнуть мышкой по тексту нужной вам команды или программы В результате на панели ввода появится текст выбранной команды/программой;

· отредактировать команду или программу, если необходимо;

· нажать кнопку Run для выполнения.

2.5. Хранение программ Oracle 10g XE в текстовых файлах

Для хранения команд SQL и программ PL/SQL можно использовать возможности текстового редактора SQL Commands, как это описано в п. 2.4. Однако в этом случае для доступа к сохраненным текстам необходимо находиться в среде редактора SQL Commands. То есть из файловой системы сохраненные тексты недоступны. В тех случаях, когда возникает необходимость сохранить результаты разработок (тексты программ) в файлах операционной системы, можно использовать средства работы со скриптами – SQL Scripts.

Вызов SQL Scripts выполняется с домашней страницы нажатием сначала пиктограммы SQL, а затем – пиктограммы SQL Scripts. После этого в окне браузера открывается страница SQL Scripts, вид которой показан на рисунке 5.

Рис.5. Страница SQL Scripts

Для сохранения команд SQL или текста программы в файле необходимо выполнить следующие действия.

Рис.6. Страница Script Editor

select * from tab_1

Результатом выполнения перечисленных действий будет сохранение текста нашей команды в файле с именем My_scr_1.sql.

Для того, чтобы прочитать содержимое файла My_scr_1.sql для выполнения или редактирования в среде Oracle 10g XE, необходимо выполнить следующие действия.

Рис.7. Страница Upload Script

Рис.8. Страница SQL Scripts

Рис.9. Страница Script Editor

Таким образом, следуя указанным выше действиям, мы можем сохранять любые команды или программы в текстовых файлах операционной системы, а затем читать сохраненные тексты для продолжения работы с ними в среде Oracle 10g XE.

 

2.6. Выход из среды Oracle 10g XE

После окончания работы в Oracle 10g XE закройте окно браузера MS Internet Explorer.

 

3. Приложения

3.1 Элементы управления рабочих окон Oracle 10g XE

Название элемента управления

Назначение элемента управления

Autocommit (автофиксация)

Флажок Autocommit устанавливает режим сохранения в базе данных.

Если флажок установлен, то любая команда SQL или блок PL/SQL выполняются в рамках своей собственной транзакции, которая автоматически фиксируется, т.е. результаты выполнения сразу сохраняются в базе данных. Если флажок не установлен, то можно использовать SQL-команды COMMIT или ROLLBACK для соответственно сохранения результатов в БД или их отмены.

Describe

(описывать)

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

Display

(отобразить)

Поле Display позволяет указывать количество строк вывода результата в панели вывода, чтобы не выводить все результирующие строки (при их большом количестве).

Explain

(объяснять)

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

History

(история)

Пункт меню History позволяет просмотреть всю историю выполнения команд SQL. В отображаемом списке ранее выполненных команд можно выбрать любую их них, щелкнув мышкой по команде. Выбранная таким образом команда автоматически помещается в поле ввода, и готова к выполнению по кнопке Run.

Run

(запустить)

Кнопка Run служит для запуска на выполнение команд, введенных в поле ввода.

Result

(результат)

Пункт меню Result выбран изначально (по умолчанию), что обеспечивает режим вывода результатов выполнения команд при нажатии кнопки Run на панели ввода.

Save

(сохранить)

Кнопка Save позволяет запомнить набранные в панели ввода команды под указанным именем. Используя это имя, можно позднее загрузить сохраненные команды в поле ввода, не набирая их снова вручную.

Saved SQL (запомненные команды SQL)

Пункт меню Saved SQL используется для выбора ранее запомненных команд (смотри описание кнопки Save панели ввода).

 

3.2 Основные управляющие клавиши

Клавиши

Функция клавиш

Esc

Выход из различных прикладных систем (отмена команд, сообщений и т.д.)

Enter

Клавиша ввода

Ctrl

Управление. Действует при одновременном нажатии с другими клавишами

Ctrl + Alt

Переход к русскому алфавиту. Повторное нажатие - возвращение к латинскому алфавиту

Alt

Изменение. Действует совместно с другими клавишами

Shift

Смена регистра прописных и строчных букв

Caps Lock

Фиксация регистра прописных букв. Повторное нажатие клавиши отменяет режим

Num Lock

Включение/выключение малой цифровой клавиатуры (расположена справа)

BackSpace

Удаление символа слева от курсора

Del

Удаление символа справа от курсора

Home

Перевод курсора в начало строки

End

Перевод курсора в конец строки

­

¬ ®

¯

Команды перемещения курсора на одну позицию в направлении, указанном стрелкой

PgUp

Переход на предыдущую страницу

PgDn

Переход на следующую страницу

Команды работы с блоками

­

Shift - ¬ ®

¯

Сtrl-C

Ctrl-X

Ctrl-V

 

 

Сtrl-Ins

 

Shift-Ins

Отметить блок в направлении, указанном стрелками (отмеченный блок выделяется другим цветом)

Скопировать отмеченный блок в буфер

Удалить отмеченный блок и поместить его в буфер

Скопировать блок из буфера в текущую позицию курсора (таким образом можно переписывать фрагменты из одной программы в другую)

Скопировать отмеченный блок в буфер. Аналогично Ctrl-C

Скопировать отмеченный блок из буфера в текущую позицию курсора. Аналогично Ctrl-V

 

3.3 Список наиболее распространенных ошибок компиляции

№ и тип ошибки

Примечание

ORA-00942: table or view does not exist

Указано имя несуществующей таблицы или представления

   

 

Лабораторная работа 1

Тема 1: Типы данных SQL Oracle. Стандартные функции. Арифметические и логические выражения.

(в лекциях см. п. 2, 1.4, 3 1.1)

Тема 2: Агрегатные функции. Группировка строк. Сортировка строк

(в лекциях см. п.3.1.1)

Пример задания:

1. Вывести имена всех продавцов и города, в которых они работают, кроме продавцов, работающих в Лондоне.

Решение:

select sname,city from sal where city<>'London'

Результат:

SNAME

CITY

Serres

San Jose

Rifkin

Barcelona

Axelrod

New York



Задание:

Вариант 0.
1. Напишите запрос к таблице Покупателей, чей    вывод может включить всех покупателей, причем с оценкой выше 200, если они находятся не в Риме
2. Запросите двумя способами все заказы на 3 и  4 января.
3. Напишите запрос, который сосчитал бы сумму всех заказов на 3 января.
4. Напишите запрос, который выбрал бы наивысший рейтинг в  каждом городе с сортировкой по возрастанию рейтингов.
5. Создайте представление на основе запроса из задания 1 и, используя это представление, выведите данные о продавцах из Берлина.

Вариант 1.
1. Напишите запрос к таблице Покупателей, чей    вывод может включить всех покупателей, причем с оценкой выше 100,  если они находятся не в Лондоне
2. Напишите запрос, который может вывести всех    покупателей, чьи имена начинаются с буквы, попадающей в  диапазон от A до G.
3. Напишите запрос, который сосчитал бы сумму всех заказов на 4 и 6 января.
4. Напишите запрос, который выбрал бы наивысший рейтинг в  каждом городе с сортировкой по убыванию рейтингов.
5. Создайте представление на основе запроса из задания 1 и, используя это представление, выведите данные о покупателях из Лондона.

Вариант 2.
1. Напишите запрос к таблице Покупателей для выборки данных, при этом рейтинг должен быть не ниже 200, кроме покупателей из Лондона.
2. Запросите двумя способами все заказы на 3 и  6 января.
3. Напишите запрос, который сосчитал бы сумму всех заказов  для продавца с номером 1001.
4. Напишите запрос, который выбрал бы наименьший рейтинг в  каждом городе с сортировкой по убыванию названий городов.
5. Создайте представление на основе запроса из задания 1 и, используя это представление, выведите данные о покупателях с заказами 3 числа.

Вариант 3.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех покупателей, причем с оценкой выше 200,  если не находятся в Риме
2. Напишите запрос, который может вывести всех покупателей, чьи имена начинаются с буквы, попадающей в  диапазон от D до L.
3. Напишите запрос, который сосчитал бы сумму всех заказов для продавца 1002.
4. Напишите запрос, который выбрал бы средние комиссионные в каждом городе с сортировкой по возрастанию названий городов.
5. Создайте представление на основе запроса из задания 1 и, используя это представление, выведите данные о покупателях с рейтингом 100.

Вариант 4.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех покупателей, причем с оценкой ниже 300, если они не из Берлина
2. Запросите двумя способами все заказы на 3, 5 и  6 января.
3. Напишите запрос, который сосчитал бы среднюю сумму заказа для продавца 1007.
4. Напишите запрос, который выбрал бы наибольший номер заказа на каждое число с сортировкой по возрастанию номеров заказов.
5. Создайте представление на основе запроса из задания 1 и, используя это представление, выведите данные о продавцах не из Лондона.

Вариант 5.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех покупателей, причем с оценкой не выше 100, если они не из San Jose
2. Напишите запрос, который может вывести всех  покупателей, чьи города начинаются с буквы, попадающей в  диапазон от A до S.
3. Напишите запрос, который сосчитал бы сумму всех заказов для заказчика 2008.
4. Напишите запрос, который выбрал бы наибольший номер заказа на каждое число с сортировкой по убыванию чисел.
5. Создайте представление на основе запроса из задания 1 и, используя это представление, выведите данные о покупателях не из Рима.

Вариант 6.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех покупателей, причем с оценкой выше 200, если они не находятся в San Jose
2. Запросите двумя способами все заказы, обслуживаемые продавцами с номерами 1001 и 1003.
3. Напишите запрос, который сосчитал бы сумму всех заказов на 4 и 5 января.
4. Напишите запрос, который выбрал бы наименьший номер заказа на каждое число с сортировкой по убыванию чисел.
5. Создайте представление на основе запроса из задания 1 и, используя это представление, выведите данные о покупателях из San Jose.

Вариант 7.
1. Напишите запрос к таблице Покупателей, чей вывод может включить всех покупателей, причем с оценкой выше 100, если они не находятся в Лондоне
2. Напишите запрос, который может вывести всех покупателей, чьи города начинаются с буквы, попадающей в  диапазон от C до R.
3. Напишите запрос, который сосчитал бы сумму всех заказов для продавцов с номерами меньше 1003.
4. Напишите запрос, который выбрал бы самый ранний заказ для каждого продавца с сортировкой по убыванию имен продавцов.
5. Создайте представление на основе запроса из задания 1 и, используя представление, выведите данные о покупателях с рейтингом 100.

Вариант 8.
1. Напишите запрос к таблице Продавцов, чей вывод может включить всех продавцов, причем с комиссионными  не меньше 0.13, если они не находятся в Лондоне
2. Запросите двумя способами все заказы, обслуживаемые продавцами с номерами 1002 и 1007.
3. Напишите запрос, который сосчитал бы сумму всех заказов на 3 и 5 января.
4. Напишите запрос, который выбрал бы самый поздний заказ каждого продавца с сортировкой по убыванию дат заказов.
5. Создайте представление на основе запроса из задания 1 и, используя это представление, выведите данные о продавцах с комиссионными больше 0,11.

Вариант 9.
1. Напишите запрос к таблице Продавцов, чей  вывод может включить всех продавцов, причем с комиссионными  меньше 0.13, если они не находятся в San Jose
2. Напишите запрос, который может вывести всех покупателей, чьи города начинаются с буквы, попадающей в  диапазон от A до L.
3. Напишите запрос, который сосчитал бы среднюю сумму заказа для покупателя 2004.
4. Напишите запрос, который выбрал бы самый ранний заказ каждого заказчика с сортировкой по возрастанию дат заказов.
5. Создайте представление на основе запроса из задания 1 и, используя это представление, выведите данные о продавцах с заказами до 5 числа. 

Лабораторная работа 2

Тема 1: Выборка данных из объединенных таблиц (в лекциях см. п.3 1.1).

Тема 2: Подзапросы (в лекциях см. п. 3.1.1).

Тема 3: Создание таблиц (в лекциях см. п.3.3.1).

Пример задания:

1. Вывести для каждого продавца номера его заказов.

Решение:

select s.sname, o.onum

from sal s,ord o

where s.snum=o.snum

order by s.sname,o.onum;

Результат:

SNAME

ONUM

Axelrod

3009

Motica

3002

Peel

3003

Peel

3008

Peel

3011

Rifkin

3001

Rifkin

3006

Serres

3005

Serres

3007

Serres

3010



Задание:

Вариант 0.

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

2. Выведите имена и города всех заказчиков с тем же рейтингом, что и у Hoffmana, используя подзапрос.

3. Выведите информацию о первых двух продавцах, имеющих заказы после 3-го числа.

4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.


Вариант 1.

1. Напишите запрос, который вывел бы для каждого  заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных не в  Лондоне и не в Риме.

2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных больше, чем у Motiki, используя подзапрос.

3. Выведите информацию о первых трех заказах, чьи суммы выше средней суммы по всем заказам.

4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.


Вариант 2.

1. Напишите запрос, который вывел бы для каждого заказа на 4 и 6 января его номер, стоимость заказа, имя продавца и размер комиссионных, полученных продавцом за этот заказ.

2. Выведите имена и города всех заказчиков с рейтингом, отличным от Hoffmana, используя подзапрос.

3. Выведите информацию о первых двух покупателях, имеющих заказы до 5-го числа.

4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.


Вариант 3.

1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных не в San Jose и не в Berlin.

2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных меньше, чем у Motiki, используя подзапрос.

3. Выведите первые три по возрастанию стоимостей заказа и определите имена их покупателей.

4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.


Вариант 4.

1. Напишите запрос, который вывел бы для каждого заказа (кроме заказов 4 января) его номер, стоимость заказа, имя продавца и размер комиссионных, полученных продавцом за этот заказ.

2. Выведите имена и города всех заказчиков с тем же рейтингом, что и у Grassa, используя подзапрос.

3. Выведите последние два заказа, отсортированных по возрастанию стоимостей, и определите имена их продавцов.

4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.


Вариант 5.

1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость в рублях (по текущему курсу) и имя заказчика. Данные вывести для заказчиков, размещенных в Лондоне и в Риме.

2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных меньше, чем у Serresa, используя подзапрос.

3. Выведите первые три по алфавиту продавца и все их заказы.

4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.


Вариант 6.

1. Напишите запрос, который вывел бы для каждого заказа (кроме заказов 3 и 5 января) его номер, стоимость заказа, имя продавца и размер комиссионных, полученных продавцом за этот заказ.

2. Выведите имена и города всех заказчиков с рейтингом, отличным от Grassa, используя подзапрос.

3. Выведите продавцов из первые трех по алфавиту городов и все их заказы.

4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.


Вариант 7.

1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных в San Jose и в Barcelona.

2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных больше, чем у Serresa, используя подзапрос.

3. Выведите последние два по алфавиту покупателя и все их заказы.

4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.


Вариант 8.

1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных в Лондоне и Нью-Йорке.

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

3. Выведите покупателей из последних трех по алфавиту городов и все их заказы.

4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.


Вариант 9.

1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных не в Лондоне и не в Нью-Йорке.

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

3. Выведите три самых поздних заказа, выполненных до 5-го числа, и имена и города их продавцов.

4. Используя команду CREATE TABLE … AS SELECT, создайте таблицу для хранения данных, формируемых представлением из задания 5 лабораторной работы № 1. Выведите содержимое таблицы.



Лабораторная работа 3

Тема 1: Создание таблиц. Последовательности (в лекциях см. п.3.3.1, 3.3.2).

Тема 2: Вставка, изменение и удаление данных из таблиц (в лекциях см. п.3.1.2).

Тема 3: Транзакции (в лекциях см. п.3.2).


Пример задания:

1. Создать таблицу с именем tab1 в базе данных одним числовым полем для целых двузначных чисел и двумя символьными полями размером по 50 байтов.

Решение:

create table tab1 (

col1 number(2),

col2 varchar2(50),

col3 varchar2(50)

)

Результат:

Table created.

Задание:

Вариант 0.
1. Создать таблицу для хранения данных о высших учебных заведениях. Таблица должна содержать поле для уникального номера ВУЗа, названия, количества факультетов. Создать первичный ключ для уникального номера.
2. Напишите команды для вставки в таблицу 5-7 записей о ВУЗах. Создайте последовательность и используйте ее в командах вставки для заполнения поля первичного ключа.
3. Напишите две команды изменения данных: одну - для изменения названия ВУЗа с самым большим номером, вторую - для увеличения вдвое количества факультетов для ВУЗа с самым маленьким номером. После этих двух команд напишите команду подтверждения транзакции.
4. Напишите команду удаления строк с данными о ВУЗах с нечетными номерами.
5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

Вариант 1.
1. Создать таблицу для хранения данных о дисциплинах, изучаемых в высших учебных заведениях. Таблица должна содержать поле для уникального номера, названия дисциплины, количества лекционных часов.
2. Напишите команды для вставки в таблицу 5-7 записей о дисциплинах. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите две команды изменения данных: одну - для изменения названия дисциплины с самым большим номером, вторую - для увеличения вдвое количества лекционных часов для дисциплины с самым маленьким номером. После этих двух команд напишите команду подтверждения транзакции.
4. Напишите команду удаления строк с данными о дисциплинах с нечетными номерами.
5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

Вариант 2.
1. Создать таблицу для хранения данных о городах России. Таблица должна содержать поле для уникального номера, названия города, численности населения.
2. Напишите команды для вставки в таблицу 5-7 записей о городах. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите две команды изменения данных: одну - для изменения названия города с самым большим номером, вторую - для увеличения вдвое численности населения города с самым маленьким номером. После этих двух команд напишите команду подтверждения транзакции.
4. Напишите команду удаления строк с данными о городах с нечетными номерами.
5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

Вариант 3.
1. Создать таблицу для хранения данных о странах Европы. Таблица должна содержать поле для уникального номера, названия страны, численности населения.
2. Напишите команды для вставки в таблицу 5-7 записей о странах. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите две команды изменения данных: одну - для изменения названия страны с самым большим номером, вторую - для увеличения вдвое численности населения страны с самым маленьким номером. После этих двух команд напишите команду подтверждения транзакции.
4. Напишите команду удаления строк с данными о странах с нечетными номерами.
5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

Вариант 4.
1. Создать таблицу для хранения данных о марках автомобилей. Таблица должна содержать поле для уникального номера, названия автомобиля, стоимости.
2. Напишите команды для вставки в таблицу 5-7 записей об автомобилях. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите две команды изменения данных: одну - для изменения названия автомобиля с самым большим номером, вторую - для увеличения вдвое стоимости автомобиля с самым маленьким номером. После этих двух команд напишите команду подтверждения транзакции.
4. Напишите команду удаления строк с данными об автомобилях с нечетными номерами.
5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

Вариант 5.
1. Создать таблицу для хранения данных о кинофильмах. Таблица должна содержать поле для уникального номера, названия кинофильма, размера бюджета.
2. Напишите команды для вставки в таблицу 5-7 записей о кинофильмах. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите две команды изменения данных: одну - для изменения названия кинофильма с самым большим номером, вторую - для увеличения вдвое бюджета кинофильма с самым маленьким номером. После этих двух команд напишите команду подтверждения транзакции.
4. Напишите команду удаления строк с данными о кинофильмах с нечетными номерами.
5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

Вариант 6.
1. Создать таблицу для хранения данных о книгах. Таблица должна содержать поле для уникального номера, названия книги, количества экземпляров тиража.
2. Напишите команды для вставки в таблицу 5-7 записей о книгах. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите две команды изменения данных: одну - для изменения названия книги с самым большим номером, вторую - для увеличения вдвое тиража книги с самым маленьким номером. После этих двух команд напишите команду подтверждения транзакции.
4. Напишите команду удаления строк с данными о книгах с нечетными номерами.
5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

Вариант 7.
1. Создать таблицу для хранения данных о курортах. Таблица должна содержать поле для уникального номера, названия курорта, количества туров в год.
2. Напишите команды для вставки в таблицу 5-7 записей о курортах. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите две команды изменения данных: одну - для изменения названия курорта с самым большим номером, вторую - для увеличения вдвое количества туров курорта с самым маленьким номером. После этих двух команд напишите команду подтверждения транзакции.
4. Напишите команду удаления строк с данными о курортах с нечетными номерами.
5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.


Вариант 8.
1. Создать таблицу для хранения данных о спортивных соревнованиях. Таблица должна содержать поле для уникального номера, названия соревнования, количества команд участников.
2. Напишите команды для вставки в таблицу 5-7 записей о соревнованиях. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите две команды изменения данных: одну - для изменения названия соревнования с самым большим номером, вторую - для увеличения вдвое количества участников соревнования с самым маленьким номером. После этих двух команд напишите команду подтверждения транзакции.
4. Напишите команду удаления строк с данными о соревнованиях с нечетными номерами.
5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

Вариант 9.
1. Создать таблицу для хранения данных о спортсменах. Таблица должна содержать поле для уникального номера, имени спортсмена, его рейтинга.
2. Напишите команды для вставки в таблицу 5-7 записей о спортсменах. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите две команды изменения данных: одну - для изменения имени спортсмена с самым большим номером, вторую - для увеличения вдвое рейтинга спортсмена с самым маленьким номером. После этих двух команд напишите команду подтверждения транзакции.
4. Напишите команду удаления строк с данными о спортсменах с нечетными номерами.
5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.


Лабораторная работа 4

Тема 1: Блоки PL/SQL. Типы данных и операторы языка PL/SQL (в лекциях см. п.5, 6, 7).

Тема 2: Вывод данных (в лекциях см. п. 10.1).

Тема 3: Работа с базами данных в программах PL/SQL. Курсоры

        (в лекциях см. п. 8).

Тема 4: Обработка исключительных ситуаций

        (в лекциях см. п. 5.4).

Пример задания:

1. Составить и выполнить программу PL/SQL, которая считывает из базы данных количество продавцов в Лондоне и выводит результат.

Решение:

declare
   n number(2);
begin
   select count(*) into n from sal where city=’London’;
   DBMS_OUTPUT.PUT_LINE(‘продавцов в Лондоне: ’||n);
end;
/

Примечание: при наборе текста в окне SQL Commands апострофы (’) должны быть прямыми, а не наклонными.

Результат:

продавцов в Лондоне: 2

Задание:

Вариант 0.
1. Составить и выполнить программу PL/SQL, которая вычисляет квадраты первых пяти положительных чисел, кратных 2, используя простой цикл Loop, и выводит результаты.
2. Составить и выполнить программу PL/SQL, которая определяет, под каким знаком Зодиака Вы родились. Для определения используйте оператор CASE.
3. Составить и выполнить программу PL/SQL, которая считывает из базы данных имя продавца, работающего в Барселоне, количество его заказов и выводит результат.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT ... INTO ..., считывает из базы данных имя продавца, работающего в Лондоне, количество его заказов и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных номера заказов, сделанных до 04 января, и выводит результат.

Вариант 1.
1. Составить и выполнить программу PL/SQL, которая вычисляет квадраты первых пяти положительных чисел, кратных 2, используя цикл For, и выводит результаты.
2. Составить и выполнить программу PL/SQL, которая определяет, под каким знаком Зодиака Вы родились. Для определения используйте оператор IF..ELSIF...
3. Составить и выполнить программу PL/SQL, которая считывает из базы данных количество продавцов, чьи комиссионные меньше 0.15, и выводит результат.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT ... INTO ..., считывает из базы данных имена продавцов, чьи комиссионные меньше 0.15, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных суммы заказов, сделанных после 04 января, и выводит результат.

Вариант 2.
1. Составить и выполнить программу PL/SQL, которая вычисляет квадраты первых пяти положительных чисел, кратных 2, используя цикл While, и выводит результаты.
2. Составить и выполнить программу PL/SQL, которая определяет, какие знаки Зодиака попадают на летние месяцы. Для определения используйте оператор CASE.
3. Составить и выполнить программу PL/SQL, которая считывает из базы данных имя продавца, работающего в Нью-Йорке, максимальную дату его заказов и выводит результат.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT ... INTO ..., считывает из базы данных имя продавца, работающего в Лондоне, максимальную дату его заказов и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных имена продавцов, чьи комиссионные меньше 0.14, и выводит результат.

Вариант 3.
1. Составить и выполнить программу PL/SQL, которая вычисляет квадраты первых пяти положительных чисел, кратных 3, используя простой цикл Loop, и выводит результаты.
2. Составить и выполнить программу PL/SQL, которая определяет, какие знаки Зодиака попадают на весенние месяцы. Для определения используйте оператор IF..ELSIF....
3. Составить и выполнить программу PL/SQL, которая считывает из базы данных город, в котором проживает покупатель Grass, количество его заказов и выводит результат.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT ... INTO ..., считывает из базы данных имена продавцов, чьи комиссионные меньше 0.13, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных имена покупателей, чей рейтинг больше 100, и выводит результат.

Вариант 4.
1. Составить и выполнить программу PL/SQL, которая вычисляет квадраты первых пяти положительных чисел, кратных 3, используя цикл For, и выводит результаты.
2. Составить и выполнить программу PL/SQL, которая определяет, на какой квартал года попадает Ваш любимый праздник. Для определения используйте оператор CASE.
3. Составить и выполнить программу PL/SQL, которая считывает из базы данных имя покупателя, работающего в Берлине, сумму всех его заказов и выводит результат.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT ... INTO ..., считывает из базы данных имя покупателя, работающего в Риме, сумму всех его заказов и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных названия городов тех покупателей, чей рейтинг больше 200, и выводит результат.

Вариант 5.
1. Составить и выполнить программу PL/SQL, которая вычисляет квадраты первых пяти положительных чисел, кратных 3, используя цикл While, и выводит результаты.
2. Составить и выполнить программу PL/SQL, которая определяет, на какой квартал года попадает Ваш любимый праздник. Для определения используйте оператор IF..ELSIF....
3. Составить и выполнить программу PL/SQL, которая считывает из базы данных сумму всех заказов после 04 января, и выводит результат.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT ... INTO ..., считывает из базы данных номера заказов после 04 января, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных названия городов тех продавцов, чьи комиссионные больше 0.11, и выводит результат.

Вариант 6.
1. Составить и выполнить программу PL/SQL, которая вычисляет квадраты первых пяти положительных чисел, кратных 4, используя простой цикл Loop, и выводит результаты.
2. Составить и выполнить программу PL/SQL, которая выводит сумму (цифрами) оплаты учебы за семестр в рублях. Слово «рубль» должно склоняться в соответствии с правилами русского языка. Для определения используйте оператор CASE.
3. Составить и выполнить программу PL/SQL, которая считывает из базы данных максимальный заказ до 05 января, и выводит результат.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT ... INTO ..., считывает из базы данных даты заказов до 05 января, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных имена продавцов из Лондона и выводит результат.

Вариант 7.
1. Составить и выполнить программу PL/SQL, которая вычисляет квадраты первых пяти положительных чисел, кратных 4, используя цикл For, и выводит результаты.
2. Составить и выполнить программу PL/SQL, которая выводит сумму (цифрами) оплаты учебы за семестр в рублях. Слово «рубль» должно склоняться в соответствии с правилами русского языка. Для определения используйте оператор IF..ELSIF....
3. Составить и выполнить программу PL/SQL, которая считывает из базы данных среднюю величину всех заказов после 03 января, и выводит результат.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT ... INTO ..., считывает из базы данных суммы всех заказов после 03 января, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных имена покупателей из Рима и выводит результат.

Вариант 8.
1. Составить и выполнить программу PL/SQL, которая вычисляет квадраты первых пяти положительных чисел, кратных 2, используя цикл While, и выводит результаты.
2. Составить и выполнить программу PL/SQL, которая определяет, на какой квартал (кварталы) года попадает Ваш знак Зодиака. Для определения используйте оператор CASE.
3. Составить и выполнить программу PL/SQL, которая считывает из базы данных минимальный заказ для продавцов, работающих в Лондоне, и выводит результат.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT ... INTO ..., считывает из базы данных номера заказов для продавцов, работающих в Лондоне, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных имена продавцов, работающих не в Лондоне, и выводит результат.

Вариант 9.
1. Составить и выполнить программу PL/SQL, которая вычисляет кубы первых пяти положительных чисел, используя простой цикл Loop, и выводит результаты.
2. Составить и выполнить программу PL/SQL, которая определяет, на какой квартал (кварталы) года попадает Ваш знак Зодиака. Для определения используйте оператор IF..ELSIF....
3. Составить и выполнить программу PL/SQL, которая считывает из базы данных максимальный заказ для продавцов, не работающих в Лондоне, и выводит результат.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT ... INTO ..., считывает из базы данных даты заказов для продавцов, не работающих в Лондоне, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных имена покупателей, чей рейтинг меньше 200, и выводит результат.

 

Лабораторная работа 5

Тема 1: Хранимые процедуры и функции PL/SQL
                (в лекциях см. п. 9.1, 9.2).
Тема 2: Пакеты PL/SQL
                (в лекциях см. п. 9.3).
Тема 3: Триггеры PL/SQL
                (в лекциях см. п. 9.6).

Пример задания:
1. Создать хранимую процедуру PL/SQL, которая выводит наибольшее из двух чисел, заданных в качестве аргументов.

Решение:

create or replace procedure PrMax (
p_N1 in number,
p_N2 in number ) is
res number;
begin
res := case when(p_N1 >= p_N2) then p_N1 else p_N2 end;
DBMS_OUTPUT.PUT_LINE('вывод: '||res );
end;
/
Результат:

Procedure created.

2. Вызвать процедуру PrMax из безымянного блока, задав числовые аргументы.

Решение:

begin
PrMax(2, 8.9);
end;
/
Результат:

вывод: 8,9

 

3. Создать триггер PL/SQL, который регистрирует в журнальной таблице вставку строки в таблицу Ord. В журнал необходимо заносить вид операции, пользователя и время выполнения.

Решение:

CREATE OR REPLACE TRIGGER Tr_Ord_Log

AFTER INSERT ON Ord

BEGIN
INSERT INTO Ord_Log (logid, lsql, luser, ltime)
VALUES(sq_log.nextval, ‘INSERT’, USER, SYSDATE);
END Tr_Ord_Log;
/
Результат:

Trigger created.

 

4. Создать триггер PL/SQL, который регистрирует в журнальной таблице изменение комиссионных для продавцов только в том случае, если комиссионные увеличиваются.

Решение:

CREATE OR REPLACE TRIGGER Tr_Sal_Log

AFTER UPDATE ON Sal

FOR EACH ROW

WHEN (new.comm. > old.comm)
BEGIN
INSERT INTO Sal_Log (logid, lsql, luser, ltime)
VALUES(sq_log.nextval, ‘UPDATE’, USER, SYSDATE);
END Tr_Sal_Log;
/
Результат:

Trigger created.

 

Задание:

Вариант 0.
1. Создать пакет, в который поместить процедуру, которая выводит произведение двух чисел, заданных в качестве аргументов. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о первых трех заказах, чьи суммы выше значения, переданного в параметре. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который регистрирует в журнальной таблице изменение рейтинга для покупателей. При регистрации необходимо сохранять в журнале старое и новое значения рейтинга и время изменения.
4. Создать триггер PL/SQL, который регистрирует в журнальных таблицах операции изменения и удаления данных в таблице заказов. Каждый вид операции должен регистрироваться в своей журнальной таблице.


Вариант 1.
1. Создать пакет, в который поместить функцию, которая возвращает минимальное из двух чисел, заданных в качестве аргументов. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о первых двух покупателях, имеющих заказы до даты, переданной в параметре. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который запрещает изменение рейтинга для покупателей, если изменение происходит после 25-го числа.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции вставки, изменения и удаления данных в таблице продавцов. При регистрации необходимо сохранять вид операции и время ее выполнения.

Вариант 2.
1. Создать пакет, в который поместить процедуру, которая принимает в параметрах Ваши фамилию, имя и отчество, а выводит инициалы и фамилию. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о первых N (передать в параметре) по возрастанию стоимостей заказах и именах их покупателей. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который разрешает изменение суммы заказа только в рабочее время.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции вставки и изменения заказов. Регистрация выполняется, если стоимость заказа превышает $100, и включает имя пользователя, вид операции и стоимость заказа.

Вариант 3.
1. Создать пакет, в который поместить функцию, которая возвращает куб числа, заданного в качестве аргумента. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о последних N (передать в параметре) заказах, отсортированных по возрастанию стоимостей, и именах их продавцов. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который регистрирует изменение комиссионных продавцов с указанием только имени таблицы и времени изменения.
4. Создать триггер PL/SQL, который запускается при удалении покупателей. Триггер должен запрещать удаление, если покупатель имеет более одного заказа.

Вариант 4.
1. Создать пакет, в который поместить процедуру, которая выводит заглавными буквами строку, заданную в качестве аргумента. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о первых N (передать в параметре) по алфавиту продавцах и их заказах. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который запрещает удаление заказов продавца в последний день месяца.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции вставки, изменения и удаления данных в таблице заказов. При регистрации необходимо сохранять вид операции, номер и сумму заказа.

Вариант 5.
1. Создать пакет, в который поместить функцию, которая возвращает самую длинную из двух строк, заданных в качестве аргументов. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о продавцах из первых N (передать в параметре) по алфавиту городов и их заказах. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который разрешает удаление покупателей с количеством заказов меньше трех.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции вставки, изменения и удаления данных в таблице заказов, а также округляет стоимость заказа до целого числа при вставке и изменении.

Вариант 6.
1. Создать пакет, в который поместить процедуру, которая выводит самую короткую из двух строк, заданных в качестве аргументов. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о  последних N (передать в параметре) по алфавиту покупателях и их заказах. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который регистрирует изменение комиссионных, только если новое значение больше прежнего.
4. Создать триггер PL/SQL, который запускается при вставке, изменении и удалении заказов. Триггер должен регистрировать тип и дату операции и запрещать удаление, если стоимость заказа превышает $5000.

Вариант 7.
1. Создать пакет, в который поместить функцию, которая возвращает суммарную длину двух строк, заданных в качестве аргументов. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о покупателях из последних N (передать в параметре) по алфавиту городов и их заказах. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который регистрирует изменение городов для покупателей с сохранением в журнале имени покупателя, прежнего и нового названия города.
4. Создать триггер PL/SQL, который запускается при вставке, изменении и удалении заказов. Триггер должен регистрировать тип и время операции и запрещать удаление, если количество заказов в таблице не превышает 10.

Вариант 8.
1. Создать пакет, в который поместить функцию, которая принимает в параметрах Ваши фамилию, имя и отчество, а возвращает фамилию и инициалы. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о трех самых поздних заказах, выполненных до даты, переданной в параметре. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который запрещает удаление продавцов, если количество выполненных им заказов больше трех.
4. Создать триггер PL/SQL, который регистрирует в журнальной таблице операции вставки, изменения и удаление заказов. Регистрация выполняется только в нерабочее время и включает имя пользователя, вид операции и стоимость заказа.

Вариант 9.
1. Создать пакет, в который поместить процедуру, которая выводит строчными (маленькими) буквами строку, заданную в качестве аргумента. Вызвать процедуру пакета из безымянного блока.
2. Включите в пакет процедуру, которая считывает из базы данных информацию о первых двух продавцах, имеющих заказы после даты, переданной в параметре. Вызовите процедуру пакета из безымянного блока.
3. Создать триггер PL/SQL, который разрешает удаление покупателей только из города Лондон.
4. Создать триггер PL/SQL, который регистрирует в журнальных таблицах операции вставки, изменения и удаления данных в таблице продавцов. Каждый вид операции необходимо регистрировать в своей таблице. При регистрации необходимо сохранять пользователя и время ее выполнения.




наверх


назад