Запросы на обновление используются главным образом для того, чтобы внести изменения сразу в большое количество записей с помощью одного запроса. Классическим примером такого запроса является изменение цены в таблице "Товары" (Products) на некоторый постоянный коэффициент, например можно увеличить цену одной из категорий товара на 20%. Чтобы создать такой запрос:
Рис. 8.8.
Прежде чем выполнять запрос на обновление, щелкните левой кнопкой мыши по стрелке на кнопке Вид (View) и выберите Режим таблицы (Datasheet View). Вы увидите все записи, которые будут обновлены, хотя данные в обновляемых полях будут еще старые. И только убедившись, что отобраны нужные записи, можно выполнять запрос.
В приведенном примере изменялись значения в поле, которое не является первичным ключом в таблице "Товары" (Products). Особый случай возникает, когда требуется обновить значение первичного ключа в таблице. Если эта таблица связана отношением "один-ко-многим" с другими таблицами, то при изменении первичного ключа записи должны одновременно измениться значения внешних ключей во всех связанных записях подчиненных таблиц. Access обеспечивает выполнение такого изменения автоматически, т. к. поддерживает каскадное обновление записей. При определении связи между таблицами можно установить флажок (Cascade Update Related Fields).
Если такой флажок установлен, то при изменении значения первичного ключа в главной таблице Access автоматически выполняет специальный запрос, с помощью которого обновляются внешние ключи всех связанных записей в подчиненной таблице.
Убедиться в том, как работает такой запрос, можно на примере таблиц "Сотрудники" (Employees) и "Заказы" (Orders). Для этого нам придется сначала сделать копии этих таблиц и установить связь между ними:
Сегодня поговорим на тему «Запрос на обновление Access». Запрос на обновление Access может быть использован для обновления данных в полях базовых таблиц. Изменения вносятся в группу записей, отбираемых с помощью указанных пользователем условий отбора. Значения для изменений в полях определяются в бланке запроса в строке Обновление (Update To).
Задача. Рассчитайте стоимость товара в каждой строке таблицы ОТГРУЗКА и сохраните ее в поле СУММА_ОТГР этой же таблицы.
Таким образом, рассмотренный запрос позволяет автоматизировать расчет стоимости товара, указанного в каждой строке спецификации накладной ― записи таблицы ОТГРУЗКА.
Имена таблиц, используемых в запросе, и способ их объединения задаются не-посредственно за именем инструкции UPDATE. Инструкция UPDATE обновляет указанное в предложении SET поле ОТГРУЗКА.СУММА_ОТГР, присваивая значение, за-данное выражением [ЦЕНА]*[КОЛ_ОТГР]. Обновление происходит во всех записях, которые удовлетворяют условию отбора, заданному в предложении WHERE.
Для закрепления смотрим видеоурок.
Под обновлением данных в БД подразумевается изменение значений в существующих записях таблицы. При этом возможно как изменение значений полей в группе строк (даже всех строк таблицы), так и правка значения поля отдельной строки.
В SQL, изменить запись в таблице БД можно с помощью команды UPDATE. В самом минимальном виде команда обновления данных выглядит следующим образом:
UPDATE таблица SET поле = значение
Здесь, UPDATE – команда указывающая, что запрос на обновление данных;
таблица – название таблицы, в которой будет проводиться изменения;
SET – команда, после которой через запятую указываются поля с назначаемыми им значениями;
поле – поле таблицы, в которое будет внесено изменение;
значение – новое значение, которое будет внесено в поле.
Например, если необходимо задать полю во всех строках таблицы значение равное нулю, можно выполнить такой запрос:
UPDATE goods SET price = 0
В этом случае, поле price абсолютно во всех имеющиеся строках таблицы примет значение 0.
Изменение значения всех полей в таблице необходимо крайне редко. Чаще всего необходимо поменять значение какой-то конкретной записи. Для этого в завершении строки с командой UPDATE будет добавлена директива WHERE, в которой указывается условие, определяющее с какой именно строкой нужно выполнить операцию обновления.
Имеется таблица:
Для примера, нужно обновить стоимость товара с известным нам его значением num. Для этого, выполним следующий запрос:
UPDATE goods SET price = 150 WHERE num = 2
Теперь, перед операцией изменения полей, будет выбрана строка, удовлетворяющая условию num = 2. Такая строка в таблице одна. В этой стоке цена и будет изменена на значение 150. В результате получим таблицу с измененной ценой товара.
Если вспомнить все многообразие условий в запросе , можно представить себе насколько разнообразными могут быть выборки. Поэтому и запросы на обновления могут выполняться либо с одной строкой, либо с группой строк, либо со всеми строками таблицы. Все зависит от стоящей перед вами задачи, а так же с какими строками таблицы нужно выполнять операции обновления.
Например, мы хотим уменьшить в два раза цену всех товаров, которые сейчас стоят от 100 и более. Запрос:
UPDATE goods SET price = price / 2 WHERE price >= 100
Условие WHERE здесь содержит правило, по которому будут выбраны только товары с ценой равной или более 100, а те товары, цена у которых ниже 100, затронуты запросом не будут.
price = price / 2 – формула, по которой будет вычисляться новая цена товаров. Новая цена будет записана равной старой цене поделенной на два.
В результате выполнения такого запроса получим таблицу с измененными записями:
При необходимости обновлять сразу несколько полей, все поля с их значениями указываются после директивы SET через запятую. Например, нужно изменить название и цену товара с кодом 2 на «утюг», стоимостью 300:
UPDATE goods SET title = "утюг" , price = 300 WHERE num = 2
Такой запрос каждому соответствующему полю в строке назначит его значение. А условие укажет, в какой именно строке будут выполнены изменения.
Выше приведены основные виды операций обновления. На их основе формируется запросы для решения большинства задач изменения данных в разработке с применением SQL.
С помощью запроса на обновление в базах данных Access можно добавлять, изменять и удалять данные в существующих записях. Запросы на обновление можно рассматривать как разновидность диалогового окна Поиск и замена с более широкими возможностями. Запрос на обновление нельзя использовать для добавления новых записей в базу данных или их удаления из нее.
Для добавления новых записей используется запрос на добавление, для удаления записей - запрос на удаление.
Ниже представлены сходства и различия между функцией "Поиск и замена" и запросом на обновление
Как и в диалоговом окне Поиск и замена , в запросе на обновление можно указать значение, которое требуется заменить, а также новое значение.
В отличие от функции Поиск и замена запрос на обновление позволяет:
использовать условия, которые не зависят от заменяемого значения;
обновлять несколько записей за раз;
изменять записи в нескольких таблицах одновременно.
Запрос на обновление нельзя использовать для обновления данных в полях указанных ниже типов.
Вычисляемые поля. Значения вычисляемых полей не хранятся в таблице постоянно. После вычисления они существуют только во временной памяти компьютера. Поскольку для вычисляемых полей не предусмотрено место постоянного хранения, их невозможно обновить.
Поля итогового или перекрестного запроса. Значения в запросах этих типов рассчитываются, поэтому их нельзя обновить с помощью запроса на обновление.
Поля с типом данных "Счетчик". Значения в полях с типом данных "Счетчик" изменяются только при добавлении записи в таблицу.
Поля в запросах уникальных значений и уникальных запросов на поиск записей Значения в таких запросах суммируются. Некоторые значения представляют одну запись, а другие - более одной записи. Операция обновления невозможна, так как невозможно определить, какие записи были исключены как дубликаты, и, следовательно, невозможно обновить все необходимые записи. Это ограничение действует, если вы используете запрос на обновление или пытаетесь обновить данные вручную путем ввода значений в форму или таблицу.
Поля в запросе на объединение Вы не можете обновить данные из полей запроса на объединение, так как каждая запись, отображаемая в нескольких источниках данных, отображается только один раз в результатах запроса на объединение. Поскольку некоторые повторяющиеся записи удаляются из результатов, приложению Access не удается обновить все необходимые записи.
Поля, являющиеся первичными ключами. В некоторых случаях, например если поле первичного ключа используется в связи таблиц, обновить поле с помощью запроса невозможно, если только для связи не было настроено автоматическое каскадное обновление.
Примечание: При каскадном обновлении Access автоматически обновляет значения внешнего ключа при изменении значения первичного ключа в родительской таблице.
Чтобы создать запрос на обновление, рекомендуется выполнить следующее: создать запрос на выборку для определения записей, которые требуется обновить, а затем преобразовать его в запрос на обновление и обновить записи. Такая последовательность позволяет убедиться, что вы обновляете именно нужные записи.
Совет: Перед выполнением запроса на обновление рекомендуется создать резервную копию базы данных. Результаты данного запроса нельзя отменить, а созданная резервная копия позволит вам восстановить данные в случае необходимости.
Создание резервной копии базы данных
Откройте вкладку Файл и выберите команду Сохранить как . Обратите внимание: если вы используете Access 2010, откройте вкладку Файл и выберите команду Сохранить и опубликовать .
Справа в разделе Расширенная установка щелкните элемент Создать резервную копию базы данных .
В диалоговом окне Сохранение резервной копии укажите имя и расположение резервной копии и нажмите кнопку Сохранить .
Приложение Access закроет исходный файл, создаст резервную копию и снова его откроет.
Чтобы вернуться к резервной копии, закройте и переименуйте исходный файл, чтобы получить возможность использовать имя исходной версии. Назначьте резервной копии имя исходной версии и откройте переименованную резервную копию в Access.
Откройте базу данных, содержащую записи, которые нужно обновить.
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов .
Откроется конструктор запросов и диалоговое окно Добавление таблицы .
Откройте вкладку Таблицы .
Выделите одну или несколько таблиц с записями, которые требуется обновить, и нажмите кнопку Добавить , а затем - кнопку Закрыть .
Таблица или таблицы отображаются в конструкторе запросов в одном или нескольких окнах, а в Windows список всех полей в каждой таблице. На этом рисунке показан конструктор запросов с обычной таблицей.
1. Таблица в окне конструктора запросов
2. Бланк запроса
В окнах таблиц дважды щелкните поля, которые необходимо обновить. Выделенные поля появятся в строке Поле бланка запроса.
Для каждого столбца в бланке запроса можно добавить одно поле таблицы.
Чтобы быстро добавить все поля в таблице, дважды щелкните звездочку (* ) в верхней части списка полей таблицы в окне таблицы. На рисунке показан бланк запроса со всеми добавленными полями.
Чтобы ограничить результаты запроса на основе значений полей, в бланке запроса в строке Условие введите условие, которое необходимо использовать для ограничения результатов.
Таблица примеров условий
В приведенной ниже таблице представлены некоторые примеры условий, а также результаты их применения.
Примечание: Во многих примерах этой таблицы используются подстановочные знаки, чтобы сделать запрос более гибким или эффективным.
Условие | Результат |
---|---|
Возвращает все числа больше 234. Чтобы найти все числа меньше 234, используйте условие < 234. |
|
>= " Новосибирск " |
Возвращает все записи от "Новосибирск" до конца алфавита. |
Между #2/2/2020 # и #12/1/2020 # |
Выбирает даты между 2-фев-17 и 1-дек-17 (ANSI-89). Если в базе данных применяется набор подстановочных знаков ANSI-92, используйте вместо знаков решетки (# ) одинарные кавычки (" ). Пример: между "2/2/2020" и "12/1/2020". |
Not "Германия" |
Находит все записи, в которых содержимое поля не соответствует значению "Германия". Согласно этому условию будут найдены записи, содержащие дополнительный текст, кроме слова "Германия", например "Германия (евро)" или "Европа (Германия)". |
Находит все записи кроме тех, которые начинаются с буквы "Т". Если в базе данных применяются подстановочные знаки ANSI-92, используйте знак процента (% ) вместо звездочки (* ). |
|
Находит все записи, которые не оканчиваются буквой "т". Если в базе данных применяются подстановочные знаки ANSI-92, используйте знак процента (%) вместо звездочки (*). |
|
In(Канада,Великобритания) |
Находит все записи в списке со словами "Канада" или "Великобритания". |
В текстовом поле выполняется поиск всех записей, которые начинаются на одну из первых четырех букв алфавита (А-Г). Если в базе данных применяются подстановочные знаки ANSI-92, используйте знак процента (%) вместо звездочки (*). |
|
Находит все записи, которые содержат сочетание букв "тр". Если в базе данных применяются подстановочные знаки ANSI-92, используйте знак процента (%) вместо звездочки (*). |
|
Like "Григорий Верны?" |
Находит все записи, начинающиеся с имени "Григорий" и содержащие вторую строку из 9 букв, из которых 6 букв составляют начало фамилии "Верный", а последняя буква неизвестна. Если в базе данных применяется набор подстановочных знаков ANSI-92, используйте вместо вопросительного знака (? ) знак подчеркивания (_ ). |
Поиск всех записей в течение 2 февраля 2020 г. Если в базе данных используется набор подстановочных знаков ANSI-92, заключайте дату в одинарные кавычки (") вместо знаков решетки (#); Например, ("2/2/2020"). |
|
< Date() - 30 |
Использует функцию Date для возврата всех дат не менее 30-дневной давности. |
Использует функцию Date для возврата всех записей, содержащих текущую дату. |
|
Between Date() And DateAdd("M", 3, Date()) |
Использует функции Date и DateAdd для возврата всех записей между текущей датой и датой на три месяца позже. |
Возвращает все записи, содержащие пустое (незаполненное или неопределенное) значение. |
|
Возвращает все записи, содержащие непустое значение. |
|
Возвращает все записи, содержащие строку нулевой длины. Такие строки обычно используются, когда поле обязательно должно иметь значение, но это значение еще неизвестно. Например, в поле требуется ввести номер факса, но у некоторых клиентов его нет. В этом случае вы вводите пару двойных кавычек без пробела между ними ("" ), а не цифрами. |
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить .
Убедитесь, что запрос возвращает те записи, которые следует обновить.
Чтобы удалить поля, которые не нужно включать в конструктор запросов, выделите их и нажмите клавишу DELETE.
Чтобы добавить поля в конструктор запросов, перетащите их в бланк запросов.
При обновлении данных в одной таблице данными из другой необходимо соблюдать основное правило: типы данных исходного и целевого полей должны совпадать или быть совместимыми.
Кроме того, при обновлении данных в одной таблице данными из другой и использовании совместимых типов данных вместо совпадающих приложение Access преобразует типы данных этих полей в целевой таблице. В результате некоторые данные в целевых полях могут обрезаться (удаляться). В разделе указаны случаи, когда можно или нельзя выполнять преобразование типов данных. Также в этом разделе приведена таблица, демонстрирующая, когда преобразование типа данных может привести к изменению или удалению всех либо некоторых данных в поле, а также какие данные могут удаляться.
Процесс обновления данных в одной таблице данными из другой включает основные этапы, указанные ниже.
Создание запроса на обновление и добавление в него исходной и целевой таблиц.
Объединение этих таблиц по полям, содержащим связанные сведения.
Добавление имен целевых полей в строку Поле бланка запроса.
Добавление имен исходных полей в строку Обновление бланка запроса с использованием следующего синтаксиса: [исходная_таблица].[исходное_поле ] .
Действия, описанные в данном разделе, предполагают, что используются две похожих таблицы. В этом примере таблица "Клиенты" располагается в унаследованной базе данных и содержит более свежие данные, чем таблица "Заказчики". Несколько имен менеджеров и адресов были изменены. Поэтому было принято решение обновить таблицу "Заказчики" данными из таблицы "Клиенты".
Код покупателя | Адрес | Город | Область | Почтовый индекс | Страна | Телефон | Контакт |
|
---|---|---|---|---|---|---|---|---|
Музей научных достижений |
Загородное шоссе, д. 150 |
Московская обл. |
Верный Григорий |
|||||
Авиакомпания "Урал-тур" |
ул. Гарибальди, д. 170 |
Пермская обл. |
Корепин Вадим |
|||||
Винный завод |
ул. Кедрова, д. 54 |
Красноярск |
Красноярский край |
Ожогина Инна |
||||
Фармацевтическая фабрика |
ул. Губкина, д. 233 |
Тверская обл. |
Новиков Николай |
|||||
Кофейная фабрика |
пл. Хо Ши Мина, д. 15, кв. 5 |
Шашков Руслан |
||||||
Почтовая служба |
Лихов пер., 991 |
Красноярск |
Красноярский край |
Горноженко Дмитрий |
||||
НИИ железа |
Ул. Тенистая, д. 698 |
Московская обл. |
Грачев Николай |
|||||
Корпорация "Софт" |
ул. Заречная, 503 |
Ильина Юлия |
||||||
Лесопитомник |
ул. Заречная, 504 |
Сергиенко Мария |
Код клиента | Адрес | Город | Область | Почтовый индекс | Страна | Телефон | Руководитель |
|
---|---|---|---|---|---|---|---|---|
Музей научных достижений |
Загородное шоссе, д. 150 |
Московская обл. |
Песоцкий Станислав |
|||||
Авиакомпания "Урал-тур" |
ул. Гарибальди, д. 170 |
Пермская обл. |
Корепин Вадим |
|||||
Винный завод |
ул. Кедрова, д. 54 |
Красноярск |
Красноярский край |
Ожогина Инна |
||||
Фармацевтическая фабрика |
ул. Губкина, д. 233 |
Тверская обл. |
Новиков Николай |
|||||
Кофейная фабрика |
Орликов пер, д. 896 |
Шашков Руслан |
||||||
Почтовая служба |
Лихов пер., 991 |
Красноярск |
Красноярский край |
Подколзина Екатерина |
||||
НИИ железа |
ул. Строителей, д. 150, кв. 78 |
Московская обл. |
Попкова Дарья |
|||||
Корпорация "Софт" |
ул. Заречная, 503 |
Верный Григорий |
||||||
Лесопитомник |
ул. Заречная, 504 |
Сергиенко Мария |
Помните, что хотя типы данных каждого поля таблицы могут не совпадать, они должны быть совместимыми. Приложение Access должно быть в состоянии преобразовать данные исходной таблицы в тип данных, используемый в целевой таблице. Иногда в процессе преобразования часть данных удаляется. Дополнительные сведения об ограничениях при преобразовании см. в разделе .
Примечание: В описанных ниже действиях предполагается, что используются два приведенных выше образца таблиц. Описанные действия можно адаптировать к конкретным данным.
В приведенной ниже таблице представлен перечень типов данных Access и описаны ограничения преобразования типов данных и возможные при этом потери данных.
Конечный тип данных | Преобразуемый тип данных | Изменения и ограничения |
---|---|---|
Текстовый |
255 первых знаков остаются, остальные удаляются. |
|
Числовой |
Нет ограничений. |
|
Дата/время |
Нет ограничений. |
|
Денежный |
Нет ограничений. |
|
Нет ограничений. |
||
Логический |
||
Текстовый |
Нет ограничений. |
|
Числовой |
Нет ограничений. |
|
Дата/время |
Нет ограничений. |
|
Денежный |
Нет ограничений. |
|
Нет ограничений. |
||
Логический |
Значение -1 ("Да" в логическом поле) преобразуется в "Да". Значение 0 ("Нет" в логическом поле) преобразуется в "Нет". |
|
Нет ограничений. |
||
Числовой |
Текстовый |
Текст может включать только числа, допустимые денежные значения и разделители целой и дробной частей. Число знаков в поле с типом данных "Текстовый" не должно превышать соответствующий размер поля, заданный для типа данных "Числовой". |
Поле МЕМО должно содержать только текст и допустимые разделители целой и дробной частей. Число знаков в поле МЕМО не должно превышать соответствующий размер поля, заданный для типа данных "Числовой". |
||
Числовой (с другим размером поля или другой точностью) |
Значения не должны быть больше или меньше, чем размер нового поля. Из-за изменения точности приложение Access может округлить некоторые значения. |
|
Дата/время |
Возможность преобразования даты и времени зависит от размера числового поля. Следует помнить, что в приложении Access все даты хранятся как порядковые номера, а значения даты и времени - как числа двойной точности с плавающей запятой. Дата 30 декабря 1899 г. имеет порядковый номер 0. Даты, не входящие в интервал от 18 апреля 1899 г. до 11 сентября 1900 г., превышают размер поля "Байт". Даты, не входящие в интервал от 13 апреля 1810 г. до 16 сентября 1989 г., превышают размер поля "Целое". Чтобы вместить все возможные даты, присвойте свойству Размер поля числового поля значение Длинное целое или больше. |
|
Денежный |
Значения не должны выходить за верхний и нижний пределы размера, заданного для поля. Например, поле с типом данных "Денежный" можно преобразовать в поле "Целое" только в том случае, если его значение больше 255, но не превышает 32 767. |
|
Значения не должны выходить за пределы размера, заданного для поля. |
||
Логический |
Значения "Да" преобразуются в -1. Значения "Нет" преобразуются в 0. |
|
Дата/время |
Текстовый |
|
Исходный текст должен быть распознаваемым сочетанием даты или даты и времени. Например, 18-Янв-2020. |
||
Числовой |
Значение должно находиться в интервале от -657434 до 2958465,99998843. |
|
Денежный |
Значение должно находиться в интервале от -657434 ₽ до 2958465,9999 ₽ |
|
Значение должно находиться в интервале от -657434 до 2958466. |
||
Логический |
Значение -1 ("Да") преобразуется в 29 декабря 1899 г. Значение 0 ("Нет") преобразуется в полночь (00:00:00). |
|
Денежный |
Текстовый |
|
Текст должен состоять только из чисел и допустимых разделителей. |
||
Числовой |
Нет ограничений. |
|
Дата/время |
Нет ограничений, но Access может округлить значение. |
|
Нет ограничений. |
||
Логический |
Значение -1 ("Да") преобразуется в 1 ₽Значение 0 ("Нет") преобразуется в 0 ₽ |
|
Текстовый |
||
Не допускается, если поле с типом данных "Счетчик" является первичным ключом. |
||
Числовой |
Не допускается, если поле с типом данных "Счетчик" является первичным ключом. |
|
Дата/время |
Не допускается, если поле с типом данных "Счетчик" является первичным ключом. |
|
Денежный |
Не допускается, если поле с типом данных "Счетчик" является первичным ключом. |
|
Логический |
Не допускается, если поле с типом данных "Счетчик" является первичным ключом. |
|
Логический |
Текстовый |
|
Исходный текст должен содержать только значения "Да", "Нет", "Истина", "Ложь", "Вкл" и "Выкл". |
||
Числовой |
||
Дата/время |
Пустое значение и значение 00:00:00 преобразуются в значение "Нет", все остальные значения преобразуются в значение "Да". |
|
Денежный |
Нуль и пустое значение преобразуются в значение "Нет", все остальные значения преобразуются в значение "Да". |
|
Все значения преобразуются в значение "Да". |
||
Текстовый |
Если исходный текст содержит допустимый веб-адрес, например adatum.com , www.adatum.com или http://www.adatum.com , он преобразуется в гиперссылку. Access пытается преобразовать и другие значения: текст становится подчеркнутым, а указатель мыши изменяется при наведении на ссылку, но эти ссылки не работают. Текст может содержать любое допустимое обозначение веб-протокола, в том числе http://, gopher://, telnet://, ftp:// или wais://. |
|
Просмотр предыдущего элемента. Действуют те же ограничения. |
||
Числовой |
Не допускается, если поле с типом данных "Числовой" используется в связи. Если исходное значение представлено в форме допустимого IP-адреса (четыре тройки цифр, разделенных точками: nnn.nnn.nnn.nnn), а числа соответствуют веб-адресу, в результате преобразования получается действительная ссылка. В противном случае Access добавляет префикс http:// в начало каждого значения, и итоговые ссылки не работают. |
|
Дата/время |
В начало каждого адреса добавляется префикс http:// |
|
Денежный |
В начало каждого значения добавляется префикс http:// , но, как и в случае с датами, итоговые ссылки практически никогда не работают. |
|
Не допускается, если поле "Счетчик" используется в связи. В начало каждого значения добавляется префикс http:// , но итоговые ссылки практически никогда не работают. |
||
Логический |
Access преобразует все значения "Да" в значение "-1", но не все значения в 0 и добавляет http:// в начало каждого значения. Итоговые ссылки не работают. |
Если при попытке выполнения запроса на изменение ничего не происходит, проверьте, не появилось ли в строке состояния Access следующее сообщение:
Данное действие или событие заблокировано в режиме отключения.
По умолчанию Access блокирует все запросы на изменение (запросы на обновление, добавление, удаление и создание таблицы) кроме тех случаев, когда база данных находится в надежном расположении или подписана и является доверенной. Если какое-либо из этих условий не выполнено, можно разрешить запросы для текущего сеанса работы с базой данных, нажав кнопку Включить содержимое на панели сообщений.
Если пользователь знает язык SQL, можно также написать инструкцию UPDATE в режиме SQL. Чтобы использовать режим SQL, создайте пустой запрос и переключитесь в режим SQL.
В данном разделе приведен синтаксис инструкции UPDATE и пример ее использования.
UPDATE таблица SET новое_значение WHERE условие ;
Инструкция UPDATE состоит из нескольких частей.
Инструкция UPDATE особенно полезна, если требуется внести изменения в большое количество записей или если записи, которые необходимо изменить, находятся в нескольких таблицах.
Одновременно можно изменить несколько полей. В приведенном ниже примере значения "СуммаЗаказов" увеличиваются на 10 процентов, а значения "Доставка" - на 3 процента для поставщиков в Великобритании.
UPDATE Orders
SET OrderAmount = OrderAmount * 1.1,
Freight = Freight * 1.03
WHERE ShipCountry = "UK";
Запросы на обновление используются главным образом для того, чтобы внести изменения сразу в большое количество записей с помощью одного запроса.
Пример
В качестве примера рассмотрим запрос, который изменяет стоимость курсов обучения в таблице «Kursused» (Курсы) на некоторый постоянный коэффициент, например можно увеличим стоимость всех курсов на 20%.
Чтобы создать такой запрос:
1. в режиме Конструктора выбираем в запрос поля Kursuse_kood, Nimetus, Maksumus из таблицы «Kursused» (Курсы).
2. Выполните запрос, чтобы убедиться, что отбираются все записи.
3. Теперь изменим запрос, превратив его в запрос на обновление. Для этого щелкните на кнопке Обновление . Изменяется заголовок запроса и появляется дополнительная строка (Обновление) . При этом исчезают строки Sort (Сортировка) и Show (Вывод на экран) .
4.Теперь нужно в строку Update To (Обновление) ввести выражение, по которому будет вычисляться новая стоимость: * 1, 2.
В других случаях можно вводить константу, например, если нужно поменять дату во многих записях на текущую.
5. Прежде чем выполнять запрос на обновление, щелкните левой кнопкой мыши по стрелке на кнопке Вид и выберите