Реализуйте указанные запросы, представления, проверки и триггеры на языке SQL.
-
Напишите запросы, удаляющие студентов
- Учащихся в группе, заданной идентификатором (GroupId).
- Учащихся в группе, заданной названием (GroupName).
- Без оценок.
- Имеющих 3 и более оценки.
- Имеющих 3 и менее оценки.
- Студентов, c долгами (здесь и далее — по отсутствию оценки).
- Студентов, имеющих 2 и более долга.
- Студентов, имеющих не более 2 долгов.
-
Напишите запросы, обновляющие данные студентов
- Изменение имени студента (StudentId, StudentName).
- Перевод студента из группы в группу по индентификаторам (StudentId, GroupId, FromGroupId).
- Перевод всех студентов из группы в группу по идентификаторам (GroupId, FromGroupId).
- Перевод студента из группы в группу по названиям (GroupName, FromGroupName).
- Перевод всех студентов из группы в группу, только если целевая группа существует (GroupName, FromGroupName).
-
Напишите запросы, подсчитывающие статистику по студентам
- Число оценок студента (столбец Students.Marks) (StudentId).
- Число оценок каждого студента (столбец Students.Marks).
- Пересчет числа оценок каждого студента по данным из таблицы NewMarks (столбец Students.Marks).
- Число сданных дисциплин каждого студента (столбец Students.Marks).
- Число долгов студента (столбец Students.Debts) (StudentId).
- Число долгов каждого студента (столбец Students.Debts).
- Число долгов каждого студента группы (столбец Students.Debts) (GroupName).
- Число оценок и долгов каждого студента (столбцы Students.Marks, Students.Debts).
-
Напишите запросы, обновляющие оценки, с учетом данных из таблицы
NewMarks
, имеющей такую же структуру, как таблица
Marks
- Проставляющий новую оценку только если ранее оценки не было.
- Проставляющий новую оценку только если ранее оценка была.
- Проставляющий максимум из старой и новой оценки только если ранее оценка была.
- Проставляющий максимум из старой и новой оценки (если ранее оценки не было, то новую оценку).
-
Работа с представлениями
- Создайте представление StudentMarks в котором для каждого студента указано число оценок (StudentId, Marks).
- Создайте представление AllMarks в котором для каждого студента указано число оценок, включая оценки из таблицы NewMarks (StudentId, Marks).
- Создайте представление Debts в котором для каждого студента, имеющего долги указано их число (StudentId, Debts).
- Создайте представление StudentDebts в котором для каждого студента указано число долгов (StudentId, Debts).
-
Целостность данных.
Обратите внимание, что задания из этого раздела надо посылать в PCMS, но они будут проверяться только вручную после окончания сдачи. То есть в PCMS вы получите + за любое решение.
В комментарии перед запросом укажите версию использованной СУБД.
- Добавьте проверку того, что у студентов есть оценки только по дисциплинам из их плана (NoExtraMarks) (StudentId, CourseId).
- Добавьте проверку того, что все студенты каждой группы имею оценку по одному и тому же набору дисциплин (SameMarks). (StudentId).
- Создайте триггер PreserveMarks, не позволяющий уменьшить оценку студента по дисциплине. При попытке такого изменения оценка изменяться не должна. (StudentId).
-
Напишите запросы, удаляющие студентов:
- Учащихся в группе :GroupId;
- Учащихся в группе :GroupName;
- Без оценок;
- Имеющих 3 и более оценки;
- Имеющих 3 и менее оценки;
- Студентов, c долгами (здесь и далее — по отсутствию оценки);
- Студентов, имеющих 2 и более долга;
- Студентов, имеющих не более 2 долгов.
-
Напишите запросы, обновляющие данные студентов:
- Изменение имени студента :StudentId на :StudentName;
- Перевод студента :StudentId из группы :FromGroupId в группу :GroupId;
- Перевод всех студентов из группы :FromGroupId в группу :GroupId;
- Перевод всех студентов из группы :FromGroupName в группу :GroupName;
- Перевод всех студентов из группы :FromGroupName в группу :GroupName только если целевая группа существует;
-
Напишите запросы, подсчитывающие статистику по студентам:
- Число оценок студента :StudentId (столбец Marks);
- Число оценок каждого студента (столбец Marks);
- Пересчет числа оценок каждого студента по данным из таблицы NewMarks (столбец Marks);
- Число сданных дисциплин каждого студента (столбец Marks);
- Число долгов студента :StudentId (столбец Debts);
- Число долгов каждого студента (столбец Debts);
- Число долгов каждого студента группы :GroupName (столбец Debts);
- Число оценок и долгов каждого студента (столбцы Marks, Debts);
-
Напишите запросы, обновляющие оценки, с учетом данных из таблицы
NewMarks
.
- Проставляющий новую оценку только если ранее оценки не было.
- Проставляющий новую оценку только если ранее оценка была.
- Проставляющий максимум из старой и новой оценки только если ранее оценка была.
- Проставляющий максимум из старой и новой оценки (если ранее оценки не было, то новую оценку).
-
Работа с представлениями
- Создайте представление StudentMarks в котором для каждого студента указано число оценок (столбцы StudentId, Marks);
- Создайте представление AllMarks в котором для каждого студента указано число оценок, включая оценки из таблицы NewMarks (столбцы StudentId, Marks);
- Создайте представление Debts в котором для каждого студента, имеющего долги указано их число (столбцы StudentId, Debts);
- Создайте представление StudentDebts в котором для каждого студента указано число долгов (столбцы StudentId, Debts);
-
Целостность данных.
Обратите внимание, что задания из этого раздела надо посылать в PCMS, но они будут проверяться только вручную после окончания сдачи. То есть в PCMS вы получите
+
за любое решение.В комментарии перед запросом укажите версию использованной СУБД.
- Добавьте проверку того, что у студентов есть оценки только по дисциплинам из их плана (NoExtraMarks).
- Добавьте проверку того, что все студенты каждой группы имею оценку по одному и тому же набору дисциплин (SameMarks).
- Создайте триггер PreserveMarks, не позволяющий уменьшить оценку студента по дисциплине. При попытке такого изменения оценка изменяться не должна.