Лаб SQL 2.1. Вариант 1 База данных Книжное дело Рис. 21. Фрагмент базы данных Книжное дело
Скачать 268.69 Kb.
|
Вариант 1 База данных «Книжное дело» Рис. 21. Фрагмент базы данных «Книжное дело» Создать таблицы с помощью SQL запросов. Заполнить можно обычным способом. Связь между таблицами осуществляется с помощью следующих пар полей с типом связи «один-ко-многим» соответственно: Books. Codebook - Purchases. Codebook; Deliveries. Codedelivery - Purchases. Codedelivery; Authors. Codeauthor - Books. Codeauthor; Publising_house.Code_publish - Books.Code_publish. Таблица 7 Покупки (название таблицы Purchases)
Таблица 8 Справочник книг (название таблицы Books)
Таблица 9 Справочник авторов (название таблицы Authors)
Таблица 10 Справочник поставщиков (название таблицы Deliveries)
Таблица 11 Справочник издательств (название таблицы Publishinghouse)
2.2. Упражнения с использованием операторов обработки данных для БД «Книжное дело» Выбрать из таблицы Books коды книг, названия и количество страниц, отсортировать результат по названиям книг (по возрастанию) и по полю Pages (по убыванию). Выбрать из таблицы Books названия книг и количество страниц, а из таблицы Deliveries выбрать имя соответствующего поставщика книги. Выбрать из справочника поставщиков (таблица Deliveries) названия компаний, телефоны и ИНН, у которых название компании начинается с 'ОАО'. Вывести список названий издательств (поле Publish) из таблицы Publishinghouse, которые не находятся в городе 'Москва'. Вывести список названий книг и количество страниц из таблицы Books, у которых объем в страницах укладывается в диапазон 200 - 300. Вывести список фамилий, имен, отчеств авторов из таблицы Authors, у которых фамилия начинается на одну из букв диапазона 'В' - Т'. Выбор записей по диапазону значений (In) Вывести список названий книг из таблицы Books, которые написаны следующими авторами: 'Толстой Л.Н.', 'Достоевский Ф.М.', 'Пушкин А.С (или другие авторы). Выбор записей с использованием Like Вывести список авторов из таблицы Authors, которые начинаются на букву 'К'. Выбор записей по нескольким условиям Выбрать коды авторов, имена авторов, названия соответствующих книг, если код издательства находится в диапазоне от 10 до 25 и количество страниц в книге больше 120. Многотабличные запросы (выборка из двух таблиц, выборка из трех таблиц с использованием JOIN) Вывести список названий компаний-поставщиков и названия книг, которые они поставили в период с 01.01.2012 по 31.12.2017 (условие по полю Dateorder). Вычисления Вывести стоимость одной печатной страницы каждой книги (использовать поля Cost и Pages) и названия соответствующих книг (поле Titlebook). Вывести количество лет с момента рождения авторов (использовать поле Birthday) и имена соответствующих авторов (поле Nameauthor). Вычисление итоговых значений с использованием агрегатных функций Вывести общую сумму поставок книг (использовать поле Cost), выполненных 'ЗАО Оптторг' (условие по полю Namecompany). Вывести среднюю стоимость (использовать поле Cost) и среднее количество экземпляров книг (использовать поле Amount) в одной поставке, где автором книги является 'Акунин' (условие по полю Nameauthor). Вывести все сведения о поставке (все поля таблицы Purchases), a также название книги (поле Titlebook) с минимальной общей стоимостью (использовать поля Cost и Amount). Вывести все сведения о поставке (все поля таблицы Purchases), a также название книги (поле Titlebook) с максимальной общей стоимостью (использовать поля Cost и Amount). Изменение наименований полей Вывести стоимость одной печатной страницы каждой книги (использовать поля Cost и Pages), поместив результат в поле с названием One_page, и названия соответствующих книг (поле Titlebook). Использование переменных в условии Вывести список авторов (поле Nameauthor), возраст которых меньше заданного пользователем (условие с использованием поля Birthday). Использование переменных вместо названий таблиц Вывести список издательств (поле Namecompany), книги которых были поставлены по цене 150 руб. (поле Cost). Выбор результата в таблицы Вывести список названий книг (поле Titlebook) и количества страниц (поле Pages) в каждой книге и поместить результат в таблицу с названием Temp1. Использование функций совместно с подзапросом Вывести список книг (поле Titlebook), у которых количество страниц (поле Pages) больше среднего количества страниц всех книг в таблице. Вывести список авторов (поле Nameauthor), возраст которых меньше среднего возраста всех авторов в таблице (условие по полю Birthday). Использование квантора существования в запросах Вывести список издательств (поле Publish), книги которых были приобретены оптом ('опт' из поля TypePurchase). Вывести список авторов (поле Nameauthor), книг которых нет в таблице Books. Оператор обработки данных Delete Удалить из таблицы Purchases все записи, у которых количество книг в заказе (поле Amount) = 0. Вариант 2 База данных «Успеваемость студентов» Рис. 22. Фрагмент базы данных «Успеваемость студентов» Связь между таблицами осуществляется с помощью следующих пар полей с типом связи «один-ко-многим» соответственно: Groups. Codegroup - Students. Codegroup; Students. Codestud - Progress.Codestud; Subjects. Codesubject - Progress. Codesubject; Lectors. Codelector - Progress.Codelector. Таблица 12 Список групп (название таблицы Groups)
Таблица 13 Справочник студентов (название таблицы Students)
Таблица 14 Справочник изучаемых дисциплин (название таблицы Subjects)
Таблица 15 Таблица успеваемости (название таблицы Progress)
Таблица 16 Справочник преподавателей (название таблицы Lectors)
2.4. Упражнения с использованием операторов обработки данных для БД «Успеваемость студентов» Вывести список фамилий, имен, отчеств преподавателей, их должности и ученые степени из таблицы Lectors, отсортировать результат по названиям должностей по возрастанию и по ученым степеням по убыванию. Вывести список фамилий, имен, отчеств студентов из таблицы Students и названий групп из таблицы Groups, в которых они обучаются. Вывести список дисциплин из таблицы Subjects, значение которых начинается с 'математ'. Вывести список преподавателей из таблицы Lectors и их должности, которые не являются докторами технических наук, т.е. значение поля Science не равно 'д.т.н.'. Вывести даты экзаменов из таблицы Progress и список дисциплин из таблицы Subjects, по которым сдавали экзамены в период с 01.01.2017 по 01.02.2017 (или другие даты). Вывести список дисциплин из таблицы Subjects, у которых название начинается на одну из букв диапазона 'В'-Т'. Выбор записей по диапазону значений (In) Вывести список преподавателей из таблицы Lectors и их должности, у которых есть одна из следующих ученых степеней: 'к.т.н.', 'к.э.н.', 'д.т.н.' Выбор записей с использованием Like Вывести список студентов и даты рождения из таблицы Students, которые содержат в фамилии сочетание букв 'нова'. Выбор записей по нескольким условиям Вывести список преподавателей из таблицы Lectors, которые принимали экзамены по дисциплинам с кода 5 - 12 и в период с 01.01.2017 по 01.02.2017. Многотабличные запросы (выборка из двух таблиц, выборка из трех таблиц с использованием JOIN) Вывести список названий дисциплин и имен преподавателей, которые принимали по этим дисциплинам экзамены в период с 15.01.2017 по 16.02.2017 (условие по полю Dateexam из таблицы Progress). Вычисления Вывести список всех преподавателей (Namelector), их ученые степени (поле Science) и срок их работы в годах (использовать поле Date_ из таблицы Lectors). Вывести список всех студентов (поля Surname, Name, Lastname из таблицы Students) и номер курса, на котором они занимаются, а также количество лет оставшейся учебы (использовать поле Numcourse из таблицы Groups). Вычисление итоговых значений с использованием агрегатных функций Вывести список всех групп (поле Namegroup из таблицы Groups) и количество студентов в каждой группе (по любому полю из таблицы Students). Вывести средний балл (использовать поле Estimate из таблицы Progress) по результатам экзаменов каждого студента и имена студентов (поля Surname, Name из таблицы Students) за период сдачи экзаменов с 05.01.2003 по 25.01.2003 (условие по полю Dateexam из таблицы Progress). Вывести фамилии и имена студентов (поля Surname, Name из таблицы Students) с максимальным средним баллом за весь период обучения (условие по полю Estimate из таблицы Progress). Вывести все сведения о преподавателях (все поля таблицы Lectors) с максимальным общим стажем работы (использовать поле Date_). Изменение наименований полей Вывести список преподавателей (Namelector), их ученые степени и срок их работы в годах, поместив результат в поле Oldyears. Использование переменных в условии Вывести все сведения о студентах и их даты рождения из таблицы Students, значения которых находятся в диапазоне, хранящемся в переменных Birthdaybegin и Birthdayend. Использование переменных вместо названий таблиц Вывести коды студентов и имен, названия и коды групп, причем таблица Students будет использоваться с именем 'А', а таблица Groups будет использоваться с именем 'В'. Выбор результата в таблицу Вывести все сведения о сданных экзаменах (все поля из таблицы Progress) для студента с фамилией 'Васьков' и именем 'Павел' (условия по полям Surname, Name из таблицы Students) и поместить результат в таблицу с названием Temp1. Использование функций совместно с подзапросом Вывести список преподавателей (все поля из таблицы Lectors), дата устройства которых меньше средней даты устройства всех преподавателей в таблице (условие по полю Date_). Вывести все сведения о сдачах экзаменов (все поля из таблицы Progress) и список студентов (поля Surname, Name из таблицы Students), которые по таблице Progress сдавали экзамены самыми последними (дата сдачи экзаменов Dateexam максимальна). Использование квантора существования в запросах Вывести список студентов (поля Surname, Name, Lastname из таблицы Students), которые сдали все экзамены без двоек (подзапрос по таблице Progress). Вывести список студентов (поля Surname, Name, Lastname из таблицы Students), которые не сдавали ни одного экзамена (подзапрос по таблице Progress). Оператор обработки данных Delete Удалить из таблицы Subjects все записи, в которых в поле Namesubject нет данных или в поле содержится пустое значение. |