UPDATE tblItem
SET Price = Price * 1.1
SELECT * FROM tblItem
Команда SELECT, которая располагается вслед за предложением UPDATE, не обязательна и предназначена для просмотра результатов обновления.
Ниже приведены значения полей после выполнения данного запроса на обновление.
ID |
Name |
Description |
UnitPrice |
Price |
1 |
Rubber Chicken |
A classic laugh getter |
2.0300 |
6.5890 |
2 |
Hand Buzzer |
Shock your friends |
.8600 |
1.5290 |
3 |
Stink Bomb |
Perfect for ending boring meetings |
.3400 |
1.4190 |
4 |
Invisible Ink |
Write down your most intimate thoughts |
1.4500 |
2.5190 |
5 |
Loaded Dice |
Not for gambling purposes |
1.4600 |
3.8390 |
6 |
Whoopee Cushion |
The ultimate family gag |
2.0300 |
6.5890 |
Для ограничения числа записей, подвергаемых воздействию запроса на обновление, достаточно добавить в запрос SQL предложение WHERE. Например, чтобы применить повышение цен только к дорогим товарам, стоимость которых больше $100, откорректируйте запрос так, как показано ниже.
UPDATE
SET Price = Price * 1.1
WHERE Price > 100
Эта команда увеличивает на 10% цену на товары, текущая цена которых больше $100.
С помощью запроса на удаление ( delete query) можно одним махом удалить одну или несколько записей. Например, чтобы удалить все заказы, которые были оформлены до (но не во время) последнего празднования Дня всех святых, воспользуйтесь запросом SQL, код которого приведен ниже.
DELETE *
FROM tblOrder
WHERE OrderDate < '10/31/2002'
Запрос на добавление записей
Запрос на добавление (append query) используется в двух случаях:
• при добавлении одиночной записи в таблицу;
• при копировании одной или нескольких записей из одной таблицы в другую.
Для создания запроса на добавление используйте предложение SQL INSERT. Точный синтаксис запроса зависит от того, добавляете ли вы одну запись или копируете несколько. Например, для добавления одной новой записи в tblOrder можно использовать приведенный ниже запрос.
INSERT INTO tblOrder(CustomerID, OrderDate)
VALUES (119, '6/16/2001')
При выполнении этого запроса в таблице tblOrder создается новый заказ для клиента с идентификационным номером 119 и датой 16 июня 2001 года.
НА ЗАМЕТКУ
В этом запросе на добавление для поля ID таблицы tblOrder не предлагается никакого значения, так как это поле идентификации. Попытка пользователя присвоить значение этому полю приведет к возникновению ошибки, поскольку его может сгенерировать только сам процессор баз данных.
Для создания разновидности запроса на добавление, который копирует записи из одной таблицы в другую, используйте предложение INSERT вместе с предложением SELECT. Предположим, вместо удаления старых заказов вы архивируете их, периодически копируя в архивную таблицу tblOrderArchive, которая имеет ту же структуру, что и tblOrder. Для выполнения этой работы необходимо сначала создать таблицу tblOrderArchive со структурой, аналогичной tblOrder.
CREATE TABLE tblOrderArchive (
ID [int] NOT NULL,
CustomerID [int] NULL,
OrderDate [datetime] NULL)
НА ЗАМЕТКУ
Как уже сообщалось выше, команды SQL для создания и управления структурой базы данных называются командами манипулирования данными или DML-командами. Более подробно они рассматриваются далее в главе.
Ниже приведена инструкция SQL для копирования старых записей из tblOrder в tblOrderArchive.
INSERT INTO tblOrderArchive
SELECT * FROM tblOrder
WHERE OrderDate < '6/1/2001'
При выполнении этой инструкции SQL в таблицу tblOrderArchive копируются все записи, содержащие заказы, которые были оформлены до 1 июня 2001 года.
Запросы на основе команды SELECT INTO
Запрос на основе команды SELECT INTO аналогичен запросу на добавление, за исключением того, что он создает новую таблицу и сразу же копирует в нее записи. В Microsoft Access он называется запросом на создание таблиц (make-table query). Так, в предыдущем примере все записи из таблицы tblOrder копировались в таблицу tblOrderArchive, исходя из предположения, что таблица tblOrderArchive уже существует. Вместо этого запроса для копирования тех же записей в новую таблицу с такой же структурой, как и у оригинала, воспользуйтесь приведенным ниже запросом SQL.
SELECT * INTO tblOrderArchive
FROM tblOrder
НА ЗАМЕТКУ
Этот запрос копирует все записи из tblOrder в новую таблицу с именем tblOrderArchive. Однако если такая таблица уже существует, эта команда не будет выполнена. Это отличается от результата выполнения данного запроса в Microsoft Access.
Читать дальше