Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оператор update

Обновление существующих данных

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

• если клиент изменяет количество заказанного товара, в столбце qty таблицы orders должна быть обновлена соответствующая строка;

• если руководитель переходит из одного офиса в другой, столбец mgr таблицы offices и столбец repjdffice таблицы salesreps необходимо обновить, чтобы отобразить новое назначение;

• если личные планы продаж в нью-йоркском офисе увеличиваются на пять процентов, значения столбца quota в соответствующих строках таблицы SALESREPSдолжны быть обновлены.

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

Оператор update обновляет значения одного или нескольких столбцов в выбранных строках одной таблицы. В операторе указывается целевая таблица, которая должна быть модифицирована, при этом пользователь должен иметь разрешение на обновление таблицы и каждого конкретного столбца. Предложение where отбирает строки таблицы, подлежащие обновлению. В предложении set указывается, какие столбцы должны быть обновлены, и для них задаются новые значения.

В этом примере в предложении WHERE определена одна строка таблицы CUSTOMERS, а предложение set присваивает новые значения двум столбцам этой строки. Условия поиска, которые могут быть заданы в предложении where оператора update, в точности соответствуют условиям поиска, доступным в операторах select и delete.

Как и оператор delete, оператор update может одновременно обновить несколько строк, соответствующих условию поиска. Например:

Оператор update выполняется таким образом: все строки таблицы salesreps по очереди проверяются на соответствие условию поиска. Строки, для которых условие поиска выполняется (результат проверки имеет значение true), обновляются, а строки, для которых условие не выполняется (результат проверки имеет значение false или null), не обновляются. Поскольку оператор update данного типа производит в таблице поиск строк, он иногда называется поисковым. Другой тип оператора update, всегда обновляющий одну строку, называется позиционным. Позиционный оператор update применяется только в программном SQL.

Предложение set в операторе update представляет собой список операций присваивания, отделяемых друг от друга запятыми. В каждой операции идентифицируется целевой столбец, который должен обновляться, и определяется новое значение для этого столбца. Каждый целевой столбец должен встречаться в списке только один раз; не должно быть двух операций присваивания для одного и того же целевого столбца. Согласно стандарту ANSI/ISO, для целевых столбцов необходимо использовать простые имена, но некоторые СУБД допускают использование полных имен столбцов. Так как эти имена являются ссылками на столбцы целевой таблицы, то в любом случае неоднозначность невозможна.

Выражение в операции присваивания может быть любым правильным выражением SQL, результирующее значение которого имеет тип данных, соответствующий целевому столбцу. Необходимо, чтобы значение выражения вычислялось на основе значений строки, которая в данный момент обновляется в целевой таблице. Оно не может включать в себя какие-либо агрегатные функции или вложенные запросы.

Если выражение в операции присваивания содержит ссылку на один из столбцов целевой таблицы, то для вычисления выражения используется значение этого столбца в текущей строке, которое было перед обновлением. То же самое справедливо для ссылок на столбцы в предложении where. В качестве примера рассмотрим следующий (несколько надуманный) оператор UPDATE:

Таким образом, порядок операций присваивания в предложении set не играет роли; он может быть любым.

<== предыдущая лекция | следующая лекция ==>
Удаление всех строк | Lecture 1
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 300; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.