Skip to content

Latest commit

 

History

History

hw07-modifying

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Домашнее задание 7. Изменение данных

Реализуйте указанные запросы, представления, проверки и триггеры на языке SQL.

  1. Напишите запросы, удаляющие студентов

    1. Учащихся в группе, заданной идентификатором (GroupId).
    2. Учащихся в группе, заданной названием (GroupName).
    3. Без оценок.
    4. Имеющих 3 и более оценки.
    5. Имеющих 3 и менее оценки.
    6. Студентов, c долгами (здесь и далее — по отсутствию оценки).
    7. Студентов, имеющих 2 и более долга.
    8. Студентов, имеющих не более 2 долгов.
  2. Напишите запросы, обновляющие данные студентов

    1. Изменение имени студента (StudentId, StudentName).
    2. Перевод студента из группы в группу по индентификаторам (StudentId, GroupId, FromGroupId).
    3. Перевод всех студентов из группы в группу по идентификаторам (GroupId, FromGroupId).
    4. Перевод студента из группы в группу по названиям (GroupName, FromGroupName).
    5. Перевод всех студентов из группы в группу, только если целевая группа существует (GroupName, FromGroupName).
  3. Напишите запросы, подсчитывающие статистику по студентам

    1. Число оценок студента (столбец Students.Marks) (StudentId).
    2. Число оценок каждого студента (столбец Students.Marks).
    3. Пересчет числа оценок каждого студента по данным из таблицы NewMarks (столбец Students.Marks).
    4. Число сданных дисциплин каждого студента (столбец Students.Marks).
    5. Число долгов студента (столбец Students.Debts) (StudentId).
    6. Число долгов каждого студента (столбец Students.Debts).
    7. Число долгов каждого студента группы (столбец Students.Debts) (GroupName).
    8. Число оценок и долгов каждого студента (столбцы Students.Marks, Students.Debts).
  4. Напишите запросы, обновляющие оценки, с учетом данных из таблицы

    NewMarks

    , имеющей такую же структуру, как таблица

    Marks

    1. Проставляющий новую оценку только если ранее оценки не было.
    2. Проставляющий новую оценку только если ранее оценка была.
    3. Проставляющий максимум из старой и новой оценки только если ранее оценка была.
    4. Проставляющий максимум из старой и новой оценки (если ранее оценки не было, то новую оценку).
  5. Работа с представлениями

    1. Создайте представление StudentMarks в котором для каждого студента указано число оценок (StudentId, Marks).
    2. Создайте представление AllMarks в котором для каждого студента указано число оценок, включая оценки из таблицы NewMarks (StudentId, Marks).
    3. Создайте представление Debts в котором для каждого студента, имеющего долги указано их число (StudentId, Debts).
    4. Создайте представление StudentDebts в котором для каждого студента указано число долгов (StudentId, Debts).
  6. Целостность данных.

    Обратите внимание, что задания из этого раздела надо посылать в PCMS, но они будут проверяться только вручную после окончания сдачи. То есть в PCMS вы получите + за любое решение.

    В комментарии перед запросом укажите версию использованной СУБД.

    1. Добавьте проверку того, что у студентов есть оценки только по дисциплинам из их плана (NoExtraMarks) (StudentId, CourseId).
    2. Добавьте проверку того, что все студенты каждой группы имею оценку по одному и тому же набору дисциплин (SameMarks). (StudentId).
    3. Создайте триггер PreserveMarks, не позволяющий уменьшить оценку студента по дисциплине. При попытке такого изменения оценка изменяться не должна. (StudentId).
  7. Напишите запросы, удаляющие студентов:

    1. Учащихся в группе :GroupId;
    2. Учащихся в группе :GroupName;
    3. Без оценок;
    4. Имеющих 3 и более оценки;
    5. Имеющих 3 и менее оценки;
    6. Студентов, c долгами (здесь и далее — по отсутствию оценки);
    7. Студентов, имеющих 2 и более долга;
    8. Студентов, имеющих не более 2 долгов.
  8. Напишите запросы, обновляющие данные студентов:

    1. Изменение имени студента :StudentId на :StudentName;
    2. Перевод студента :StudentId из группы :FromGroupId в группу :GroupId;
    3. Перевод всех студентов из группы :FromGroupId в группу :GroupId;
    4. Перевод всех студентов из группы :FromGroupName в группу :GroupName;
    5. Перевод всех студентов из группы :FromGroupName в группу :GroupName только если целевая группа существует;
  9. Напишите запросы, подсчитывающие статистику по студентам:

    1. Число оценок студента :StudentId (столбец Marks);
    2. Число оценок каждого студента (столбец Marks);
    3. Пересчет числа оценок каждого студента по данным из таблицы NewMarks (столбец Marks);
    4. Число сданных дисциплин каждого студента (столбец Marks);
    5. Число долгов студента :StudentId (столбец Debts);
    6. Число долгов каждого студента (столбец Debts);
    7. Число долгов каждого студента группы :GroupName (столбец Debts);
    8. Число оценок и долгов каждого студента (столбцы Marks, Debts);
  10. Напишите запросы, обновляющие оценки, с учетом данных из таблицы

    NewMarks

    .

    1. Проставляющий новую оценку только если ранее оценки не было.
    2. Проставляющий новую оценку только если ранее оценка была.
    3. Проставляющий максимум из старой и новой оценки только если ранее оценка была.
    4. Проставляющий максимум из старой и новой оценки (если ранее оценки не было, то новую оценку).
  11. Работа с представлениями

    1. Создайте представление StudentMarks в котором для каждого студента указано число оценок (столбцы StudentId, Marks);
    2. Создайте представление AllMarks в котором для каждого студента указано число оценок, включая оценки из таблицы NewMarks (столбцы StudentId, Marks);
    3. Создайте представление Debts в котором для каждого студента, имеющего долги указано их число (столбцы StudentId, Debts);
    4. Создайте представление StudentDebts в котором для каждого студента указано число долгов (столбцы StudentId, Debts);
  12. Целостность данных.

    Обратите внимание, что задания из этого раздела надо посылать в PCMS, но они будут проверяться только вручную после окончания сдачи. То есть в PCMS вы получите + за любое решение.

    В комментарии перед запросом укажите версию использованной СУБД.

    1. Добавьте проверку того, что у студентов есть оценки только по дисциплинам из их плана (NoExtraMarks).
    2. Добавьте проверку того, что все студенты каждой группы имею оценку по одному и тому же набору дисциплин (SameMarks).
    3. Создайте триггер PreserveMarks, не позволяющий уменьшить оценку студента по дисциплине. При попытке такого изменения оценка изменяться не должна.