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

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



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

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

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

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

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

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

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

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

 

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

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

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

 

132Задание:

Вариант 0.

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

2. Запросите двумя способами все заказы на 3 и 4 января 2010 г.

3. Напишите запрос, который сосчитал бы сумму всех заказов на 3 января 2010 г.

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

5. Напишите запрос, который выбрал бы наивысший рейтинг в каждом городе с сортировкой по возрастанию рейтингов.

Вариант 1.

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

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

3. Напишите запрос, который сосчитал бы сумму всех заказов на 4 и 6 января 2010 г.

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

5. Напишите запрос, который выбрал бы наивысший рейтинг в каждом городе с сортировкой по убыванию рейтингов.

Вариант 2.

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

2. Запросите двумя способами все заказы на 3 и 6 января 2010 г.

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

4. Напишите запрос, который выбрал бы наибольший заказ для каждого продавца.

5. Напишите запрос, который выбрал бы наименьший рейтинг в каждом городе с сортировкой по убыванию названий городов.

Вариант 3.

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

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

3. Напишите запрос, который сосчитал бы сумму всех заказов для продавца 1002.

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

5. Напишите запрос, который выбрал бы средние комиссионные в каждом городе с сортировкой по возрастанию названий городов.

Вариант 4.

1. Напишите запрос к таблице Покупателей, чей вывод может включить всех покупателей, причем с оценкой ниже 300, если они не из Берлина

2. Запросите двумя способами все заказы на 3, 5 и 6 января 2010 г.

3. Напишите запрос, который сосчитал бы среднюю сумму заказа для продавца 1007.

4. Напишите запрос, который выбрал бы наименьший заказ для каждого заказчика с номерами 2001 и 2002.

5. Напишите запрос, который выбрал бы наибольший номер заказа на каждое число с сортировкой по возрастанию номеров заказов.

Вариант 5.

1. Напишите запрос к таблице Покупателей, чей вывод может включить всех покупателей, причем с оценкой не выше 100, если они не из San Jose

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

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

4. Напишите запрос, который выбрал бы наибольший заказ для каждого заказчика с номерами 2002 и 2004.

5. Напишите запрос, который выбрал бы наибольший номер заказа на каждое число с сортировкой по убыванию чисел.

Вариант 6.

1. Напишите запрос к таблице Покупателей, чей вывод может включить всех покупателей, причем с оценкой выше 200, если они не находятся в San Jose

2. Запросите двумя способами все заказы, обслуживаемые продавцами с номерами 1001 и 1003.

3. Напишите запрос, который сосчитал бы сумму всех заказов на 4 и 5 января 2010 г.

4. Напишите запрос, который выбрал бы наибольший заказ для каждого продавца.

5. Напишите запрос, который выбрал бы наименьший номер заказа на каждое число с сортировкой по убыванию чисел.

Вариант 7.

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

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

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

4. Напишите запрос, который выбрал бы среднюю сумму заказа для продавцов с номерами 1002, 1003 и 1004.

5. Напишите запрос, который выбрал бы самый ранний заказ для каждого продавца с сортировкой по убыванию имен продавцов.

Вариант 8.

1. Напишите запрос к таблице Продавцов, чей вывод может включить всех продавцов, причем с комиссионными  не меньше 0.13, если они не находятся в Лондоне

2. Запросите двумя способами все заказы, обслуживаемые продавцами с номерами 1002 и 1007.

3. Напишите запрос, который сосчитал бы сумму всех заказов на 3 и 5 Октября 1990 г.

4. Напишите запрос, который выбрал бы среднюю сумму заказа для каждого продавца с номерами 1001, 1002 и 1003.

5. Напишите запрос, который выбрал бы самый поздний заказ каждого продавца с сортировкой по убыванию дат заказов.

Вариант 9.

1. Напишите запрос к таблице Продавцов, чей  вывод может включить всех продавцов, причем с комиссионными  меньше 0.13, если они не находятся в San Jose

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

3. Напишите запрос, который сосчитал бы среднюю сумму заказа для покупателя 2004.

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

5. Напишите запрос, который выбрал бы самый ранний заказ каждого заказчика с сортировкой по возрастанию дат заказов.

 

 

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

Тема 1: Выборка данных из объединенных таблиц

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

Тема 2: Подзапросы

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

Тема 2: Представления

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

 

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

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. Создайте представление на основе запроса из задания 1 лабораторной работы № 1.
4. Выведите информацию о первых двух продавцах, имеющих заказы после 3-го числа.
5. Используя представление, созданное в задании 3, выведите данные о продавца из Берлина.

Вариант 1.
1. Напишите запрос, который вывел бы для каждого  заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных не в  Лондоне и не в Риме.
2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных больше, чем у Motiki, используя подзапрос.
3. Создайте представление на основе запроса из задания 1 лабораторной работы № 1.
4. Выведите информацию о первых трех заказах, чьи суммы выше средней суммы по всем заказам.
5. Используя представление, созданное в задании 3, выведите данные о покупателях из Лондона.

 

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

 

Вариант 3.
1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных не в San Jose и не в Berlin.
2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных меньше, чем у Motiki, используя подзапрос.
3. Создайте представление на основе запроса из задания 1 лабораторной работы № 1.
4. Выведите первые три по возрастанию стоимостей заказа и определите имена их покупателей.
5. Используя представление, созданное в задании 3, выведите данные о покупателях с рейтингом 100.

 

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

 

Вариант 5.
1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость в рублях (по текущему курсу) и имя заказчика. Данные вывести для заказчиков, размещенных в Лондоне и в Риме.
2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных меньше, чем у Serresa, используя подзапрос.
3. Создайте представление на основе запроса из задания 1 лабораторной работы № 1.
4. Выведите первые три по алфавиту продавца и все их заказы.
5. Используя представление, созданное в задании 3, выведите данные о покупателях не из Рима.

 

Вариант 6.
1. Напишите запрос, который вывел бы для каждого заказа (кроме заказов 3 и 5 января) его номер, стоимость заказа, имя продавца и размер комиссионных, полученных продавцом за этот заказ.
2. Выведите имена и города всех заказчиков с рейтингом, отличным от Grassa, используя подзапрос.
3. Создайте представление на основе запроса из задания 1 лабораторной работы № 1.
4. Выведите продавцов из первые трех по алфавиту городов и все их заказы.
5. Используя представление, созданное в задании 3, выведите данные о покупателях из San Jose.

 

Вариант 7.
1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных в San Jose и в Barcelona.
2. Напишите запрос, который выводит имена и города всех продавцов, у которых процент комиссионных больше, чем у Serresa, используя подзапрос.
3. Создайте представление на основе запроса из задания 1 лабораторной работы № 1.
4. Выведите последние два по алфавиту покупателя и все их заказы.
5. Используя представление, созданное в задании 3, выведите данные о покупателях с рейтингом 100.

 

Вариант 8.
1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных в Лондоне и Нью-Йорке.
2. Напишите запрос, который выводит все заказы, сумма которых больше средней по все заказам, используя подзапрос.
3. Создайте представление на основе запроса из задания 1 лабораторной работы № 1.
4. Выведите покупателей из последних трех по алфавиту городов и все их заказы.
5. Используя представление, созданное в задании 3, выведите данные о продавца с комиссионными больше 0,11.

 

Вариант 9.
1. Напишите запрос, который вывел бы для каждого заказа его номер, стоимость и имя заказчика. Данные вывести для заказчиков, размещенных не в Лондоне и не в Нью-Йорке.
2. Напишите запрос, который выводит все заказы, сумма которых меньше средней по всем заказам, используя подзапрос.
3. Создайте представление на основе запроса из задания 1 лабораторной работы № 1.
4. Выведите три самых поздних заказа, выполненных до 5-го числа, и имена и города их продавцов.
5. Используя представление, созданное в задании 3, выведите данные о продавцах с заказами до 5 числа.

 

 

 

 

Лабораторная работа 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), но для четных номеров. Подтвердите транзакцию.

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

Вариант 1.

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

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

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

4. Напишите команду удаления строк с данными о дисциплинах с нечетными номерами.

5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

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

Вариант 2.

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

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

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

4. Напишите команду удаления строк с данными о городах с нечетными номерами.

5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

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

Вариант 3.

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

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

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

4. Напишите команду удаления строк с данными о странах с нечетными номерами.

5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

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

Вариант 4.

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

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

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

4. Напишите команду удаления строк с данными об автомобилях с нечетными номерами.

5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

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

Вариант 5.

1. Создать таблицу для хранения данных о кинофильмах. Таблица должна содержать поле для уникального номера, названия кинофильма, размера бюджета.

2. Напишите команды для вставки в таблицу 5-7 записей о кинофильмах. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.

3. Напишите две команды изменения данных: одну - для изменения названия кинофильма с самым большим номером, вторую - для увеличения вдвое бюджета кинофильма с самым маленьким номером. После этих двух команд напишите команду подтверждения транзакции.

4. Напишите команду удаления строк с данными о кинофильмах с нечетными номерами.

5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

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

Вариант 6.

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

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

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

4. Напишите команду удаления строк с данными о книгах с нечетными номерами.

5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

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

Вариант 7.

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

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

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

4. Напишите команду удаления строк с данными о курортах с нечетными номерами.

5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

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

Вариант 8.

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

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

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

4. Напишите команду удаления строк с данными о соревнованиях с нечетными номерами.

5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

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

Вариант 9.

1. Создать таблицу для хранения данных о спортсменах. Таблица должна содержать поле для уникального номера, имени спортсмена, его рейтинга.

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

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

4. Напишите команду удаления строк с данными о спортсменах с нечетными номерами.

5. Напишите команду отмены транзакции, а затем повторите команду удаления (см. п.4), но для четных номеров. Подтвердите транзакцию.

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

 

 

 

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

Тема 1: Блоки PL/SQL. Типы данных и операторы языка PL/SQL

(в лекциях см. п.5, 6, 7).

Тема 2: Вывод данных

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

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

1. Написать и выполнить безымянный блок PL/SQL, который выводит значение символьной переменной.

Решение:

declare

vv varchar2(10);

begin

vv := ‘ABCD’;

DBMS_OUTPUT.PUT_LINE(‘значение vv=’||vv);

end;

/

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

Результат:

значение vv=ABCD

Statement processed.


0,00 seconds

Задание:

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

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

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

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

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

Вариант 5.
1. Написать и выполнить безымянный блок PL/SQL, в котором объявите одну переменную числового типа, одну переменную символьного типа и одну переменную типа даты. Символьной переменной и переменной типа даты присвойте начальные значения. В основной части блока присвойте числовой переменной конкретное значение и напишите функцию вывода значений всех переменных.
2. Составить и выполнить программу PL/SQL, которая вычисляет квадраты первых пяти положительных чисел, кратных 3, используя цикл While, и выводит результаты.
3. Составить и выполнить программу PL/SQL, которая определяет, на какой квартал года попадает Ваш любимый праздник. Для определения используйте оператор IF..ELSIF....

Вариант 6.
1. Написать и выполнить безымянный блок PL/SQL, в котором объявите одну переменную числового типа, одну переменную символьного типа и одну переменную типа даты. Числовой переменной и переменной типа даты присвойте начальные значения. В основной части блока присвойте символьной переменной конкретное значение и напишите функцию вывода значений всех переменных.
2. Составить и выполнить программу PL/SQL, которая вычисляет квадраты первых пяти положительных чисел, кратных 4, используя простой цикл Loop, и выводит результаты.
3. Составить и выполнить программу PL/SQL, которая выводит сумму (цифрами) оплаты учебы за семестр в рублях. Слово «рубль» должно склоняться в соответствии с правилами русского языка. Для определения используйте оператор CASE.

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

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

 

Вариант 9.
1. Написать и выполнить безымянный блок PL/SQL, в котором объявите одну переменную числового типа, одну переменную символьного типа и одну переменную типа даты. Всем переменным присвойте начальные значения. В основной части блока присвойте каждой переменной пустое значение и напишите функцию вывода значений переменных.
2. Составить и выполнить программу PL/SQL, которая вычисляет кубы первых пяти положительных чисел, используя простой цикл Loop, и выводит результаты.
3. Составить и выполнить программу PL/SQL, которая определяет, на какой квартал (кварталы) года попадает Ваш знак Зодиака. Для определения используйте оператор IF..ELSIF....

 

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

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

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

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

(в лекциях см. п. 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

Statement processed.


0,00 seconds

Задание:

 

Вариант 0.

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

2. Составить и выполнить программу PL/SQL, которая считывает из базы данных имя продавца, работающего в Лондоне, количество его заказов и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS и выводом сообщения об ошибке из этого раздела.

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

Вариант 1.

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

2. Составить и выполнить программу PL/SQL, которая считывает из базы данных имена продавцов, чьи комиссионные меньше 0.15, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS и выводом сообщения об ошибке из этого раздела.

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

Вариант 2.

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

2. Составить и выполнить программу PL/SQL, которая считывает из базы данных имя продавца, работающего в Лондоне, максимальную дату его заказов и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS и выводом сообщения об ошибке из этого раздела.

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

Вариант 3.

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

2. Составить и выполнить программу PL/SQL, которая считывает из базы данных имена продавцов, чьи комиссионные меньше 0.13, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS и выводом сообщения об ошибке из этого раздела.

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

Вариант 4.

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

2. Составить и выполнить программу PL/SQL, которая считывает из базы данных имя покупателя, работающего в Риме, сумму всех его заказов и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS и выводом сообщения об ошибке из этого раздела.

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

Вариант 5.

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

2. Составить и выполнить программу PL/SQL, которая считывает из базы данных номера заказов после 04.01.2009 г., и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS и выводом сообщения об ошибке из этого раздела.

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

Вариант 6.

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

2. Составить и выполнить программу PL/SQL, которая считывает из базы данных даты заказов до 05.01.2009 г., и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS и выводом сообщения об ошибке из этого раздела.

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

Вариант 7.

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

2. Составить и выполнить программу PL/SQL, которая считывает из базы данных суммы всех заказов после 03.01.2009 г., и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS и выводом сообщения об ошибке из этого раздела.

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

Вариант 8.

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

2. Составить и выполнить программу PL/SQL, которая считывает из базы данных номера заказов для продавцов, работающих в Лондоне, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS и выводом сообщения об ошибке из этого раздела.

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

Вариант 9.

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

2. Составить и выполнить программу PL/SQL, которая считывает из базы данных даты заказов для продавцов, не работающих в Лондоне, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS и выводом сообщения об ошибке из этого раздела.

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

 

 

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

Тема 1: Хранимые процедуры и функции PL/SQL

(в лекциях см. п. 9.1, 9.2).

Тема 2: Пакеты PL/SQL

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

 

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

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

 

Задание:

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

 

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

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

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

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

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

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

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

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

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

 

 

 

Лабораторная работа № 7

 

Тема 1: Триггеры PL/SQL

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

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

1. Создать триггер 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.

2. Создать триггер 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. Создать триггер PL/SQL, который регистрирует в журнальной таблице изменение рейтинга для покупателей. При регистрации необходимо сохранять в журнале старое и новое значения рейтинга и время изменения.

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

3. Создайте триггер, предназначенный для формирования первичного ключа при вставке строки в таблицу, созданную в задании 1 лабораторной работы 3.

 

Вариант 1.

1. Создать триггер PL/SQL, который запрещает изменение рейтинга для покупателей, если изменение происходит после 25-го числа.

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

3. Создайте триггер, предназначенный для формирования первичного ключа при вставке строки в таблицу, созданную в задании 1 лабораторной работы 3.

 

Вариант 2.

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

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

3. Создайте триггер, предназначенный для формирования первичного ключа при вставке строки в таблицу, созданную в задании 1 лабораторной работы 3.

 

Вариант 3.

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

2. Создать триггер PL/SQL, который запускается при удалении покупателей. Триггер должен запрещать удаление, если покупатель имеет более одного заказа.

3. Создайте триггер, предназначенный для формирования первичного ключа при вставке строки в таблицу, созданную в задании 1 лабораторной работы 3.

 

Вариант 4.

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

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

3. Создайте триггер, предназначенный для формирования первичного ключа при вставке строки в таблицу, созданную в задании 1 лабораторной работы 3.

 

Вариант 5.

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

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

3. Создайте триггер, предназначенный для формирования первичного ключа при вставке строки в таблицу, созданную в задании 1 лабораторной работы 3.

 

Вариант 6.

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

2. Создать триггер PL/SQL, который запускается при вставке, изменении и удалении заказов. Триггер должен регистрировать тип и дату операции и запрещать удаление, если стоимость заказа превышает $5000.

3. Создайте триггер, предназначенный для формирования первичного ключа при вставке строки в таблицу, созданную в задании 1 лабораторной работы 3.

 

Вариант 7.

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

2. Создать триггер PL/SQL, который запускается при вставке, изменении и удалении заказов. Триггер должен регистрировать тип и время операции и запрещать удаление, если количество заказов в таблице не превышает 10.

3. Создайте триггер, предназначенный для формирования первичного ключа при вставке строки в таблицу, созданную в задании 1 лабораторной работы 3.

 

Вариант 8.

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

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

3. Создайте триггер, предназначенный для формирования первичного ключа при вставке строки в таблицу, созданную в задании 1 лабораторной работы 3.

 

Вариант 9.

1. Создать триггер PL/SQL, который разрешает удаление покупателей только из города Лондон.

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

3. Создайте триггер, предназначенный для формирования первичного ключа при вставке строки в таблицу, созданную в задании 1 лабораторной работы 3.




наверх


назад