Num_course |
|
Post |
Name_speciality |
|
Date_ |
Рис. 22. Фрагмент базы данных «Успеваемость студентов»
Связь между таблицами осуществляется с помощью следующих пар полей с типом связи «один-ко-многим» соответственно:
1.Groups.Code_group -Students.Code_group;
2.Students.Code_stud - Progress.Code_stud;
3.Subjects.Code_subject - Progress.Code_subject;
4.Lectors.Code_lector - Progress.Code_lector.
Таблица 12
Список групп (название таблицы Groups)
Название поля |
Тип поля |
Описание поля |
|
Code_group |
Integer |
Код группы |
|
Name_group |
Character |
Название группы |
|
Num_course |
Integer |
Номер курса |
|
Name_speciality |
Character |
Название специальности |
|
|
|
Таблица 13 |
|
Справочник студентов (название таблицы Students) |
|||
|
|
|
|
Название поля |
Тип поля |
Описание поля |
|
Code_stud |
Character |
Номер зачетной книжки |
|
Surname |
Character |
Фамилия студента |
|
Name |
Character |
Имя студента |
|
Lastname |
Character |
Отчество студента |
|
Code_group |
Integer |
Код группы |
|
Birthday |
Date |
Дата рождения студента |
|
Phone |
Numeric |
Контактный телефон студента |
|
Таблица 14
Справочник изучаемых дисциплин (название таблицы Subjects)
Название поля |
Тип поля |
Описание поля |
|
Code_subject |
Integer |
Код дисциплины |
|
Name_subject |
Character |
Название дисциплины |
|
Count_hours |
Integer |
Количество часов в курсе |
|
|
|
Таблица 15 |
|
Таблица успеваемости (название таблицы Progress) |
|||
|
|
|
|
Название поля |
Тип поля |
Описание поля |
|
Code_stud |
Character |
Номер зачетной книжки |
|
Code_subject |
Integer |
Код дисциплины |
|
Code_lector |
Integer |
Код преподавателя |
|
58
Date_exam |
Date |
Дата сдачи экзамена |
|
Estimate |
Integer |
Оценка |
|
Code_progress |
Integer |
Ключевое поле |
|
|
|
Таблица 16 |
|
Справочник преподавателей (название таблицы Lectors) |
|||
|
|
|
|
Название поля |
Тип поля |
Описание поля |
|
Code_lector |
Integer |
Код преподавателя |
|
Name_lector |
Character |
Фамилия, имя, отчество преподавателя |
|
Science |
Character |
Ученая степень |
|
Post |
Character |
Должность |
|
Date_ |
Date |
Дата приема на работу |
|
2.4. Упражнения с использованием операторов обработки данных для БД «Успеваемость
студентов»
Сортировка.
66.Вывести все сведения о студентах из таблицы Students и отсортировать результат по коду студента (поле Code_stud).
67.Вывести список фамилий, имен, отчеств преподавателей (поле Name_lector), их должности (поле Post) и ученые степени (поле Science) из таблицы Lectors, отсортировать результат по названиям должностей по возрастанию (использовать поле Post) и по ученым степеням по убыванию (использовать поле Science).
68.Выбрать из таблицы Groups названия групп и номера курсов (поля Name_group, Name_course) и отсортировать результат по полю
Name_course по убыванию.
Изменение порядка следования полей.
69.Вывести все сведения о студентах из таблицы Students таким образом, чтобы в результате порядок столбцов был следующим: Code_group, Name, Surname, Lastname, Phone, Birthday.
70.Выбрать все поля из таблицы Subjects таким образом, чтобы в результате порядок столбцов был следующим: Name_subject, Code_subject.
Выбор некоторых полей из двух таблиц.
71. Вывести список фамилий (поле Surname), имен (поле Name), отчеств (поле Lastname) студентов из таблицы Students и названий групп (поле Name_group) из таблицы Groups, в которых они обучаются.
59
72.Вывести даты экзаменов (поле Date_exam) из таблицы Progress и фамилии, имена, отчества преподавателей (поле Name_lector) из таблицы Lectors, принимавших в эти даты экзамены.
73.Вывести даты экзаменов (поле Date_exam) из таблицы Progress и названия дисциплин (поле Name_subject) из таблицы Subjects, по которым сдавали экзамены в указанные даты.
Условие неточного совпадения.
74.Вывести список преподавателей (поле Name_lector) из таблицы Lectors с ученой степенью кандидат каких-либо наук, т.е. у которых значение поля Science начинается с ‘к’.
75.Вывести список студентов (поля Surname, Name, Lastname) из таблицы Students и названия групп (поле Name_group) из таблицы Groups, значения которых начинаются с сочетания ‘АС’.
76.Вывести список дисциплин (поле Name_subject) из таблицы Subjects, значение которых начинается с ‘математ’.
Точное несовпадение значений одного из полей.
77.Вывести список преподавателей (поле Name_lector) из таблицы Lectors и их должности (поле Post), которые не являются докторами технических наук, т.е. значение поля Science не равно ‘д.т.н.’.
78.Вывести список групп (поле Name_group) из таблицы Groups, которые не относятся к специальности ‘электротехника’ (условие по полю
Name_speciality).
79.Вывести все сведения о всех предметах из таблицы Subjects, кроме предмета ‘высшая математика’ (условие по полю Name_subject).
Выбор записей по диапазону значений (Between).
80.Вывести даты экзаменов (поле Date_exam) из таблицы Progress и список дисциплин (поле Name_subject) из таблицы Subjects, по которым сдавали экзамены в период с 01.01.2003 по 01.02.2003 (условие по полю
Date_exam).
81.Вывести список преподавателей (поле Name_lector) из таблицы Lectors и их должности (поле Post), которые были устроены на работу в период с 12.03.2000 по 15.06.2000 (условие по полю Date_).
82.Вывести список студентов (поля Surname, Name, Lastname) и их телефоны (поле Phone) из таблицы Students, если значения телефонов находятся в диапазоне от 220000 до 226666 (условие по полю Phone).
83.Вывести список дисциплин (поле Name_subject) из таблицы Subjects, у которых название начинается на одну из букв диапазона ‘В’–‘Г’
(условие по полю Name_subject).
60
Выбор записей по диапазону значений (In).
84.Вывести список групп и названия специальностей (поля
Name_group и Name_speciality из таблицы Groups), в которых учатся студенты со следующими номерами зачетной книжки ‘АС-12-02’, ‘ПИ-14- 03’, ‘АС-21-03’, ‘БИ-12-02’ (условие по полю Code_stud из таблицы Students).
85.Вывести список преподавателей (поле Name_lector) из таблицы Lectors и их должности (поле Post), у которых есть одна из следующих ученых степеней: ‘к.т.н.’, ‘к.э.н.’, ‘д.т.н.’ (условие по полю Science).
86.Вывести список студентов (поля Surname, Name, Lastname) из таблицы Students, которые сдавали экзамены по дисциплинам со следующими кодами: 5, 8, 12, 25 (условие по полю Code_subject).
Выбор записей с использованием Like.
87.Вывести список дисциплин (поле Name_subject) из таблицы Subjects, которые начинаются на букву ‘М’.
88.Вывести список студентов (поля Surname, Name, Lastname) и даты рождения (поле Birthday) из таблицы Students, которые содержат в фамилии сочетание букв ‘нова’ (условие по полю Surname).
89.Выбрать список групп (поле Name_group) из таблицы Groups, у которых значение оканчивается на ‘0’ (ноль).
Выбор записей по нескольким условиям.
90.Вывести всех студентов (поля Surname, Name, Code_group) из таблицы Students, которые сдавали экзамен по дисциплине (поле Name_subject из таблицы Subjects) ‘математический анализ’.
91.Вывести список преподавателей (поле Name_lector) из таблицы Lectors, которые принимали экзамены по дисциплинам с кодами (условие по полю Code_subject из таблицы Progress) 5 – 12 и в период с 01.01.2003 по 01.02.2003 (условие по полю Date_exam из таблицы Progress).
92.Вывести список групп (поле Name_group) и номера курсов (поле Num_course) из таблицы Groups, в которых учатся студенты с датами рождения с 01.01.1976 по 01.01.1978 (условие по полю Birthday из таблицы Students) и кодами из диапазона 10 – 150 (условие по полю Code_stud из таблицы Students).
Многотабличные запросы (выборка из двух таблиц, выборка из трех таблиц с использованием JOIN).
93. Вывести список названий дисциплин (поле Name_subject из таблицы Subjects) и имен преподавателей (поле Name_lector из таблицы Lectors), которые принимали по этим дисциплинам экзамены.
61
94.Вывести список студентов (поля Surname, Name из таблицы Students) и номер курса (поле Num_course из таблицы Groups), учащихся в группе ‘Ас-31’ (условие по полю Name_group).
95.Вывести список имен преподавателей (поле Name_lector из таблицы Lectors), которые принимали экзамены у студентов с кодами групп 10, 12, 15 (условие по полю Code_group из таблицы Students).
96.Вывести список названий дисциплин (поле Name_subject из таблицы Subjects) и имен преподавателей (поле Name_lector из таблицы Lectors), которые принимали по этим дисциплинам экзамены в период с
15.01.2003 по 16.02.2003 (условие по полю Date_exam из таблицы Progress).
Вычисления.
97.Вывести список всех преподавателей (Name_lector), их ученые степени (поле Science) и срок их работы в годах (использовать поле Date_ из таблицы Lectors).
98.Вывести список всех студентов (поля Surname, Name, Lastname) и их возраст в годах (использовать поле Birthday из таблицы Students).
99.Вывести список всех студентов (поля Surname, Name, Lastname из таблицы Students) и номер курса, на котором они занимаются, а также количество лет оставшейся учебы (использовать поле Num_course из таблицы Groups).
Вычисление итоговых значений с использованием агрегатных функций.
100.Вывести список всех групп (поле Name_group из таблицы Groups)
иколичество студентов в каждой группе (по любому полю из таблицы
Students).
101.Вывести средний балл (использовать поле Estimate из таблицы Progress) по результатам экзаменов каждого студента и имена студентов (поля Surname, Name из таблицы Students) за период сдачи экзаменов с
05.01.2003 по 25.01.2003 (условие по полю Date_exam из таблицы Progress).
102.Вывести фамилии и имена студентов (поля Surname, Name из таблицы Students) с максимальным средним баллом за весь период обучения (условие по полю Estimate из таблицы Progress).
103.Вывести все сведения о преподавателях (все поля таблицы Lectors) с максимальным общим стажем работы (использовать поле Date_).
Изменение наименований полей.
62