Скачиваний:
48
Добавлен:
08.05.2014
Размер:
100.86 Кб
Скачать

Перечень запросов,

которые должны быть «переведены» на язык SQL и реализованы

во время лабораторных занятий по дисциплине «Базы данных»

Инфологическая модель базы данных "Учебный процесс" приведена в файле "Inf_mod.doc"

Простая выборка.

  1. Выдать содержимое всех столбцов таблицы Н_ЦИКЛЫ_ДИСЦИПЛИН.

  1. Выдать содержимое столбцов АББРЕВИАТУРА и НАИМЕНОВАНИЕ той же таблицы.

  1. Получить перечень квалификаций, присваиваемых выпускникам нашего университета.

Исключение дубликатов.

  1. Выдать неповторяющиеся имена людей из таблицы Н_ЛЮДИ.

  1. Какие состояния студентов (признаки) используются в таблице Н_УЧЕНИКИ.

Выборка вычисляемых значений.

6. Из таблицы Н_УЧЕБНЫЕ_ГОДА получить названия и продолжительность каждого учебного года (напомним, что единица измерения дат - одни сутки).

7. Используя сведения из таблицы Н_ИЗМ_ЛЮДИ, определить:

а) целое число дней, прошедших с момента изменения фамилии до текущей даты (SYSDATE);

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

  • Для округления используется функция ROUND(expr [,m]), возвращающая expr, округленное до m-го десятичного знака; если m опущено, то оно принимается равным 0, а если m < 0, то округляются цифры левее десятичной точки.

  • Для получения количества месяцев между датами d1 и d2 используется функция MONTHS_BETWEEN (d1,d2). Если d1 > d2, то результат положителен, иначе отрицателен.

Выборка с использованием фразы where и упорядочением.

8. Выдать фамилию и инициалы людей (запрос оформить в виде выражения, чтобы получить в результате один столбец, например, "Сидоров С.С.", а не три: "Сидоров","С." и "С.").

  • Для выделения из строки "str" "len" символов, начиная с "pos", используется функция SUBSTR(str,pos[,len]). Если "len" отсутствует, то выдются символы от "pos" до конца "str". При "pos" < 0 первый выделяемый символ определяется не от начала, а от конца "str".

  • Для соединения текстовых значений используется оператор ||, а значения текстовых констант должны быть заключены в апострофы (например, точка и пробел: '.' и ' ').

  • Для ограничения числа строк используйте псевдостолбец ROWNUM (WHERE ROWNUM < или WHERE <= ) и ограничьте результат 50-ю строками.

9. Выдать номер, фамилию и инициалы людей (запрос оформить в виде выражения, чтобы получить, в результате один столбец, например, "104567 Сидоров С.С.").

  • Для преобразования числового значения или даты (expr) в текстовое значение по формату, заданному в fmt (с необязательным указанием национального языка nlsparam), используется функция TO_CHAR (expr [, fmt [, 'nlsparam']] ). Если fmt опущено, то expr преобразуется в строку такой длины, которая вмещает только значащие цифры. С форматами можно познакомиться в Кратком справочнике по Oracle( http://www.cs.ifmo.ru , http://www.cis.ifmo.ru).

  • Для ограничения числа строк используйте псевдостолбец ROWNUM (WHERE ROWNUM < или WHERE <= ) и ограничьте результат 50-ю строками.

10. Выдать номер (ИД) Короткое_имя и название (имя_в_имин_падеже) всех отделов факультета Компьютерных технологий и управления.

11. Выдать "Фамилия, Имя, Отчество" всех людей, фамилии которых начинаются на "Яков".

12. Выдать "Фамилия, Имя, Отчество" всех людей из запроса номер 11, отсортировав строки по: 1) имени, 2) имени и отчеству 3) фамилии, имени и отчеству.

13. Повторить предыдущие запросы задавая сортировку позициями, а не именами столбцов.

14. Выдать " фамилия, имя, отчество" всех людей с фамилиями, начинающимися на "Э", "Ю" и "Я", с упорядочением по фамилии (составить не менее двух вариантов запроса).

15. Выдать номера, короткие имена и названия отделов с номерами 102, 111 и 212.

16. Получить из таблицы н_напр_спец код и наименование специализаций специальности 220100 (напомним, что номера специализаций отличаются от номера специальности двумя последними цифрами).

17. По таблице Н_УЧЕНИКИ познакомиться с особенностями процесса обучения студентов с номерами 114052,114746,115264,116483,117127,118705.

  • Для получения ФИО этих студентов можно воспользоваться функцией

Человек(члвк_ид, padej , priz IN NUMBER DEFAULT 0, nach DATE DEFAULT SYSDATE)

выводящей фамилию имя и отчество (priz=0) или фамилию и инициалы (priz=1) человека с

номером члвк_ид в заданном падеже ('И','Р','Д','В','Т','П') и на заданную дату

(по умолчанию устанавливается priz=0 и текущая (системная) дата – SYSDATE.

  • Для соединения текстовых значений используется оператор ||, а значения текстовых констант должны быть заключены в апострофы (например, точка и пробел: '.' и ' ').

18. Вывести из таблицы Н_ВЕДОМОСТЬ ваши оценки. Список должен содержать оценку, её преобразованное значение (5 → отлично, 4 → хорошо, 3 → удовлетворительно, 2 → неудовлетвори-тельно, зачет → зачет, незач → незачет, осв → освобождение, неявка → неявка, 99 → диплом с отли-чием, . → выдача экзаменационного листа, - → отсутствие данных), которому необходимо дать псевдоним – Эквивалент, дату получения оценки и ссылку (сэс_ид) на идентификатор таблицы Н_СОДЕРЖИМОЕ_ЭЛЕМЕНТОВ_СТРОК. Зная сэс_ид можно получить имя дисциплины, по которой получена оценка. Список упорядочить по сэс_ид и дате.

Преобразование оценок можно осуществить с помощью функции DECODE:

DECODE (expr, search1, result1 [, search2, result2] ... [default]),

где значение выражения expr сравнивается с каждым из значений search.

  • Если expr совпадает с каким-либо search, возвращается соответствующее значение result.

  • Если ни одного совпадения не найдено, возвращается значение default (или NULL, если значение default опущено).

  • Expr может иметь любой тип данных, но значения search должны иметь тот же тип, как у expr.

  • Возвращаемое значение принудительно приводится к тому типу данных, как у result.

19. Вывести список тех ваших оценок, которые заданы цифрами 5, 4, 3, 2. Список должен содержать оценку, её удвоенный цифровой эквивалент (псевдоним - Оценка*2), дату получения оценки и ссылку (сэс_ид) на идентификатор таблицы Н_СОДЕРЖИМОЕ_ЭЛЕМЕНТОВ_СТРОК. Зная сэс_ид можно получить имя дисциплины, по которой получена оценка. Список упорядочить по сэс_ид и дате.

  • Следует иметь в виду, что любое имя Oracle может в чистом виде содержать лишь буквы, цифры и три символа: $, #, _. Имена, содержащие другие символы (включая пробелы) необходимо заключать в кавычки, например, "Оценка*2".

  • Для преобразования текстового значения (char) в число по формату в fmt (с необязательным указанием нацязыка nlsparam), используется функция TO_NUMBER (char [, fmt [, 'nlsparam']]). С форматами можно познакомиться в Кратком справочнике по Oracle ( http://www.cs.ifmo.ru , http://www.cis.ifmo.ru).

20. Выполнить запрос 4, удалив из результата пробелы и точки (отсутствие имени у некоторых студентов), а также однобуквенные имена, получившиеся при вводе инициалов: ' ', '.', 'А', 'А.', 'Б', 'Б.', 'В', 'В.', 'Г', 'Г.', 'Д', 'Д.', 'Е', 'Е.', 'Ж', 'Ж.', 'З', 'З.', 'И', 'И.', 'К', 'К.', 'Л', 'Л.', 'М', 'М.', 'Н.', 'Н.', 'О', 'О.', 'П', 'П.', 'Р', 'Р.', 'С', 'С.', 'Т', 'Т.', 'У', 'У.', 'Ф', 'Ф.', 'Х', 'Х.', 'Ц', 'Ц.', 'Ш', 'Ш.', 'Э', 'Э.', 'Ю', 'Ю.'

Соседние файлы в папке лабораторная работа № 7 (бд)