Заключение

Мы подошли к концу детального обсуждения четырех предложений манипулирования данными—SELECT, UPDATE, DELETE и INSERT. Сложности этих предложений (и достаточно серьезные!) связаны, по большей части, с предложением SELECT. Как Вы могли убедиться, после того как достигнуто достаточное понимание предложения SELECT, другие предложения становятся довольно понятными. Конечно, на практике предложение SELECT обычно бывает также довольно простым.

Однако, вопреки сказанному выше, с операциями обновления также связаны две проблемы, которые заслуживают, чтобы о них здесь упомянуть.

— Первой и более важной является проблема целостности по ссылкам, которую мы уже несколько раз затрагивали. Как уже указывалось, в Приложениях А и В содержится основательное обсуждение этой проблемы.

— Вторая проблема состоит в том, что более сложным формам трех предложений обновления свойственно следующее небольшое ограничение. Если фраза WHERE в предложении UPDATE или DELETE включает подзапрос, то во фразе FROM этого подзапроса не должна упоминаться целевая таблица этого UPDATE или DELETE. Аналогичным образом в форме предложения INSERT с подзапросом во фразе FROM в подзапросе не должна упоминаться таблица, которая является целевой для этого предложения INSERT. Так, например, если нужно удалить всех поставщиков, состояние которых меньше среднего, то следующий запрос не будет работать.

DELETE

FROM S

WHERE СОСТОЯНИЕ <

(SELECT AVG (СОСТОЯНИЕ)

FROM S);

Вместо этого нужно последовательно выполнить следующие шаги:

SELECT AVG (СОСТОЯНИЕ)

FROM S:

Результат:

В соответствии с этим:

DELETE

FROM S

WHERE СОСТОЯНИЕ < 22;

Для указанных ограничений нет каких-либо внутренне присущих причин. Они являются просто следствием способа реализации рассматриваемых операций в системе DB2.

В заключение укажем, что наличие в языке SQL лишь четырех операций манипулирования данными — одна из причин легкости использования этого языка. В свою очередь тот факт, что имеется лишь четыре таких операции, является следствием простоты реляционной структуры данных. Как указывалось в главе 1, все данные в реляционной базе данных представляются совершенно одинаковым образом как значения в позициях столбцов и строк таблиц. Поскольку имеется только один способ представления всех данных, необходима лишь одна операция для каждой из четырех базисных функций (выбрать, изменить, вставить, удалить). В противоположность этому в системах, основанных на более сложных структурах данных, теоретически требуется 4n операций, где n — число способов представления данных в такой системе. Например, в системах, основанных на концепциях КОДАСИЛ, где данные могут быть представлены либо как записи, либо как связи между записями, можно обычно обнаружить операцию STORE (запомнить) для создания записи и операцию CONNECT (включить) для создания связи, операцию ERASE (стереть) для уничтожения записи и операцию DISCONNECT (исключить) для уничтожения связи, операцию MODIFY (модифицировать) для изменения записи и операцию RECONNECT (переключить) для изменения связи и т. д. На самом деле системы типа КОДАСИЛ обычно предусматривают более двух способов представления данных, но записи и связи — наиболее важные из них.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: