Базы данных - модели, разработка, реализация


         

Теперь попробуем просто записать эту


Теперь попробуем просто записать эту сложную конструкцию на SQL и убедимся, что этот сложный запрос записывается достаточно компактно.

  • DELETE FROM R2


  • WHERE R2.ФИО IN


  • (SELECT R1.ФИО


  • FROM Rl


  • WHERE Оценка = 2 OR Оценка IS NULL


  • GROOP BY R1.ФИО


  • HAVING COUNT(*) >= 2


  • Однако при выполнении операции DELETE, включающей сложный подзапрос, в подзапросе нельзя упоминать таблицу, из которой удаляются строки, поэтому СУБД отвергнет такой красивый подзапрос, который попытается удалить всех не только сдававших, но и несдававших студентов, которые имеют более двух задолженностей.

  • DELETE FROM R2


  • WHERE R2 ФИО IN


  • 97

  • (SELECT R1 ФИО


  • FROM (R2 NATURAL INNER JOIN R3 ) LEFT JOIN Rl USING ( ФИО. Дисциплина)


  • WHERE Оценка = 2 OR Оценка IS NULL


  • GROOP BY R1.ФИО


  • HAVING COUNT(*) >= 2


  • Все операции манипулирования данными связаны с понятием целостности базы данных, которое будет рассматриваться далее в главе 9. В настоящий момент мне бы хотелось отметить только то, что операции манипулирования данными не всегда выполнимы, даже если синтаксически они написаны правильно. Действительно, если мы бы захотели удалить какую-нибудь группу из отношения R3, то СУБД не позволила бы нам это сделать, так как в отношениях R1 и R2 есть строки, связанные с удаляемой строкой в отношении R3. Почему так делается, мы узнаем позднее, а пока просто примем к сведению, что не все операторы манипулирования выполнимы.

    Операция обновления данных UPDATE требуется тогда, когда происходят изменения во внешнем мире и их надо адекватно отразить в базе данных, так как надо всегда помнить, что база данных отражает некоторую предметную область. Например, в нашем учебном заведении произошло счастливое событие, которое связано с тем, что госпожа Степанова К. Е. пересдала экзамен по дисциплине "Базы данных" с двойки сразу на четверку. В этом случае нам надо срочно выполнить соответствующую корректировку таблицы R1. Операция обновления имеет следующий формат:

  • UPDATE имя_таблицы


  • SET имя_столбца = новое_значение



  • Содержание  Назад  Вперед