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



         

Операторы манипулирования данными - часть 8


  • GROOP BY R3.Группа)
  • Ну а теперь нам осталась последняя простейшая операция: надо заменить старый вложенный запрос, определявший отличников, получивших три пятерки на сессии, на новый универсальный запрос:

  • UPDATE R5
  • SET R5.Стипендия = 50%
  • WHERE R5.ФИО IN (SELECT R1.ФИО
  • FROM R1.R2
  • WHERE Rl. ФИО = R2.ФИО AND R1.Оценка = 5
  • GROOP BY R1.ФИО
  • HAVING COUNT(*) = (SELECT COUNT(*)
  • FROM R3
  • WHERE R2.Группа = R3.Группа
  • GROOP BY R3.Группа))
  • Вот какой сложный запрос мы построили. Это ведь практически один оператор, а какую сложную задачу он решает. Действительно, мощность языка SQL иногда удивляет даже профессионалов, кажется невозможно построить один запрос для решения конкретной задачи, но когда начинаешь поэтапно его конструировать - все получается. Самое сложное - это сделать переход от словесной формулировки задачи к представлению ее в терминах нашего SQL, но этот процесс сродни процессу алгоритмизации при решении задач традиционного программирования, а он всегда был самым трудным, творческим и неформализуемым процессом. Недаром на заре развития программирования известный американский специалист по программированию Дональд Е. Кнут озаглавил свой многотомный

    102

    капитальный труд по теории и практике программирования "Искусство программирования для ЭВМ" ("The art of computer programming").

    103

    95 :: 96 :: 97 :: 98 :: 99 :: 100 :: 101 :: 102 :: 103 :: Содержание




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