Сетевые базы данных

Лабораторные работы | назад

Лабораторные работы в формате 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 на панели ввода.

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

- исправить ошибку;

- запустить команду или программу на выполнение (кнопка Run).

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

- Если работа в Oracle 10g XE закончена, можно выйти из среды Oracle 10g XE.

- Если требуется выполнить новую команду/программу или отредактировать старую, переходите к следующему пункту.

Работа с окнами редактора 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 или текста программы в файле необходимо выполнить следующие действия.

- На странице SQL Scripts нажать кнопку Create (щелкнуть по ней мышкой). Страница примет вид, показанный на рисунке 6.

- В поле Script Name набрать имя файла, в котором будет сохранен текст нашей программы. Имя файла мы выбираем сами – оно должно соответствовать правилам названия файлов в операционной системе Windows. На рисунке 6 показано, что мы выбрали для нашего файла имя My_scr_1.

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

- В поле ввода заносим текс, который хотим сохранить в файле. Текст может быть набран с клавиатуры вручную или скопирован из окна текстового редактора SQL Commands. В нашем примере мы ввели текст команды SQL

select * from tab_1

- Нажать кнопку Download. В открывшемся окне нажать кнопку Сохранить. После этого открывается окно сохранения файла в Windows, в котором после выбора папки для сохранения файла нужно снова нажать кнопку Сохранить.

- После завершения процесса сохранения файла можно нажать кнопку Закрыть.

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

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

- Вернуться на страницу SQL Scripts, показанную на рисунке 5. Для этого в навигационной панели (см. раздел 2.1) щелкнуть мышкой по пункту SQL Scripts.

- На странице SQL Scripts нажать кнопку Upload. Страница примет вид, показанный на рисунке 7.

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

- Ввести в поле File путь и имя файла, используя кнопку Обзор.

- Ввести в поле Script Name имя скрипта, под которым его запомнит Oracle XE. Это может быть любое имя, не обязательно совпадающее с именем файла. В данном примере мы выбрали для скрипта имя MyScr1.

- Нажать кнопку Upload. Страница примет вид, как это показано на рисунке 8.

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

- Щелкнуть мышкой по пиктограмме MyScr1. Откроется страница Script Editor (см. рис.9), в которой отобразится содержимое файла My_scr_1

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

- Скопируйте содержимое текста в окно текстового редактора SQL Commands (используя команды, описанные в п.3.2) для его редактирования и/или выполнения.

Таким образом, следуя указанным выше действиям, мы можем сохранять любые команды или программы в текстовых файлах операционной системы, а затем читать сохраненные тексты для продолжения работы с ними в среде 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, который регистрирует в журнальной таблице операции вставки, изменения и удаления данных в таблице заказов, а также округляет стоимость заказа до целого числа при вставке и изменении. Вывести содержимое журнала регистрации.

наверх

назад