|
Программирование >> Sql: полное руководство
Обновление всех строк Предложение 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. Целостность данных
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.002
При копировании материалов приветствуются ссылки. |