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

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



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

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

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

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


 

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

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

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. Напишите запрос, который выводит все заказы, сумма которых меньше средней по всем заказам, используя подзапрос.
5. Создайте представление на основе запроса из задания 1 и, используя это представление, выведите данные о продавцах из Берлина.

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

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

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

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

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

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

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

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

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

Лабораторная работа 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. Создать таблицу для хранения данных о спортивных соревнованиях. Таблица должна содержать поле для уникального номера, названия соревнования, количества команд участников.
2. Напишите команды для вставки в таблицу 8-10 записей о соревнованиях. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите команду удаления строк с данными о соревнованиях с нечетными номерами. Напишите команду отмены транзакции, а затем повторите команду удаления, но для четных номеров. Подтвердите транзакцию.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO …, считывает из базы данных даты заказов для продавцов, не работающих в Лондоне, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных имена покупателей, чей рейтинг меньше 200, и выводит результат.

Вариант 1.

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

Вариант 2.

1. Создать таблицу для хранения данных о высших учебных заведениях. Таблица должна содержать поле для уникального номера ВУЗа, названия, количества факультетов. Создать первичный ключ для уникального номера.
2. Напишите команды для вставки в таблицу 8-10 записей о ВУЗах. Создайте последовательность и используйте ее в командах вставки для заполнения поля первичного ключа.
3. Напишите команду удаления строк с данными о ВУЗах с нечетными номерами. Напишите команду отмены транзакции, а затем повторите команду удаления, но для четных номеров. Подтвердите транзакцию.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO …, считывает из базы данных суммы всех заказов после 03 января, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных имена покупателей из Рима и выводит результат.

Вариант 3.

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

Вариант 4.

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

Вариант 5.

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

Вариант 6.

1. Создать таблицу для хранения данных о марках автомобилей. Таблица должна содержать поле для уникального номера, названия автомобиля, стоимости.
2. Напишите команды для вставки в таблицу 8-10 записей об автомобилях. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите команду удаления строк с данными об автомобилях с нечетными номерами. Напишите команду отмены транзакции, а затем повторите команду удаления, но для четных номеров. Подтвердите транзакцию.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO …, считывает из базы данных имена продавцов, чьи комиссионные меньше 0.13, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных имена покупателей, чей рейтинг больше 100, и выводит результат.

Вариант 7.

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

Вариант 8.

1. Создать таблицу для хранения данных о книгах. Таблица должна содержать поле для уникального номера, названия книги, количества экземпляров тиража.
2. Напишите команды для вставки в таблицу 8-10 записей о книгах. Создайте последовательность и используйте ее в командах вставки для заполнения поля уникального номера.
3. Напишите команду удаления строк с данными о книгах с нечетными номерами. Напишите команду отмены транзакции, а затем повторите команду удаления, но для четных номеров. Подтвердите транзакцию.
4. Составить и выполнить программу PL/SQL, которая, используя SELECT … INTO …, считывает из базы данных имена продавцов, чьи комиссионные меньше 0.15, и выводит результат. Добавить в программу раздел Exception с обработчиком OTHERS, в котором определяется вид ошибки и выводится сообщения об этой ошибке.
5. Составить и выполнить программу PL/SQL, которая, используя курсор, считывает из базы данных суммы заказов, сделанных после 04 января, и выводит результат.

Вариант 9.

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



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

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

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

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

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

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

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

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

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

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




наверх


назад