Программирование >>  Sql: полное руководство 

1 ... 77 78 79 [ 80 ] 81 82 83 ... 264


Обновление всех строк

Предложение where в инструкции update является необязательным. Если оно опущено, то обновляются все строки целевой таблицы. Например:

Увеличить все личные планы на пять процентов.

update salesreps

set quota = 1.05 * quota

10 rows updated.

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

Инструкция UPDATE с подчиненным запросом *

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

Увеличить на $5000 лимит jcpeduma для тех клиентов, которые сделали заказ на сумму более $25000.

update customers

set credit limit = credit limit + 5000.00 where cust num in (select distinct cust from orders where amount > 25000.00)

4 rows updated.

Закрепить за Биллом Адамсом клиентов, обслуживаемых служащими, чей объем продаж меньше, чем 80 процентов их личного плана.

update customers

set cust rep = 105 where cust rep in (select empl num FROM salesreps where sales < (.8 * QUOTA))

2 rows updated.

Всех служащих, обслуживающих более трех клиентов, подчинить непосредственно Сэму Кларку (идентификатор 106).

update salesreps

set manager = 106 where 3 < (select count(*) from customers where cust rep = EMPL NUM)

1 row updated.



Подчиненные запросы в предложении where инструкции update, так же как и в инструкции delete, могут иметь любой уровень вложенности и содержать внешние ссылки на целевую таблицу инструкции update. Имя столбца empl num в подчиненном запросе предьщущего примера является такой внешней ссьшкой; она относится к столбцу empl num той строки таблицы salesreps, которая проверяется в настоящий момент инструкцией update. Подчиненный запрос в этом примере является коррелированным (такие запросы рассматривались в главе 9).

Внешние ссылки часто встречаются в подчиненных запросах инструкции update, поскольку они реализуют объединение таблиц (таблицы) подчиненного запроса и целевой таблицы инструкции update. Для инструкции update справедливо то же самое ограничение стандарта SQL1, что и для инструкции delete имя целевой таблицы не может присутствовать в предложении from подчиненного запроса на любом уровне вложенности. Это предотвращает ссьшки из подчиненных запросов на целевую таблицу (часть строк которой уже может быть модифицирована). Таким образом, все ссылки в подчиненных запросах на целевую таблицу являются внешними ссьшками на ту строку целевой таблицы, которая проверяется в данный момент предложением where инструкции update. В стандарте SQL2 это ограничение также устраняется и дается определение, что ссылка на целевую таблицу в подчиненном запросе считается ссьшкой на исходную целевую таблицу, в которой еще не бьши сделаны какие-либо обновления.

Резюме

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

Однострочная инструкция insert добавляет в таблицу одну строку данных. Значения новой строки задаются в инструкции в виде констант.

Многострочная инструкция insert добавляет в таблицу ноль или более строк данных. Значения новых строк берутся из запроса, являющегося частью инструкции insert.

Инструкция delete удаляет из таблицы ноль или более строк данных Удаляемые строки задаются с помощью условия отбора.

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

В отличие от инструкции select, которая может обращаться ко многим таблицам, инструкции insert, delete и update обращаются только к одной таблице.

Условие отбора в инструкциях delete и update является таким же, как и в

инструкции select.





Целостность данных



1 ... 77 78 79 [ 80 ] 81 82 83 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.002
При копировании материалов приветствуются ссылки.
Яндекс.Метрика