
- •Перечень запросов,
- •Выборка с использованием фразы where и упорядочением.
- •Агрегирование данных.
- •Агрегирование данных с использованием фразы having.
- •Естественное соединение таблиц
- •Соединение таблицы со своей копией
- •Вложенные подзапросы
- •Объединение запросов
- •Представления
- •Создание таблиц и заполнение их данными
Перечень запросов,
которые должны быть «переведены» на язык SQL и реализованы
во время лабораторных занятий по дисциплине «Базы данных»
Инфологическая модель базы данных "Учебный процесс" приведена в файле "Inf_mod.doc"
Простая выборка.
Выдать содержимое всех столбцов таблицы Н_ЦИКЛЫ_ДИСЦИПЛИН.
Выдать содержимое столбцов АББРЕВИАТУРА и НАИМЕНОВАНИЕ той же таблицы.
Получить перечень квалификаций, присваиваемых выпускникам нашего университета.
Исключение дубликатов.
Выдать неповторяющиеся имена людей из таблицы Н_ЛЮДИ.
Какие состояния студентов (признаки) используются в таблице Н_УЧЕНИКИ.
Выборка вычисляемых значений.
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, удалив из результата пробелы и точки (отсутствие имени у некоторых студентов), а также однобуквенные имена, получившиеся при вводе инициалов: ' ', '.', 'А', 'А.', 'Б', 'Б.', 'В', 'В.', 'Г', 'Г.', 'Д', 'Д.', 'Е', 'Е.', 'Ж', 'Ж.', 'З', 'З.', 'И', 'И.', 'К', 'К.', 'Л', 'Л.', 'М', 'М.', 'Н.', 'Н.', 'О', 'О.', 'П', 'П.', 'Р', 'Р.', 'С', 'С.', 'Т', 'Т.', 'У', 'У.', 'Ф', 'Ф.', 'Х', 'Х.', 'Ц', 'Ц.', 'Ш', 'Ш.', 'Э', 'Э.', 'Ю', 'Ю.'