Язык SQL не приспособлен для организации удобного ввода данных в таблицы, хотя в его состав включены языковые конструкции, позволяющие выполнить все необходимые операции по манипуляции данными в таблицах. Все команды манипулирования данными объединены команды языка DML (Data Manipulation Language), который включает следующие команды: INSERT (вставить), UPDATE(изменить) и DELETE (удалить),
Рассмотрим команду вставки данных в таблицы, структуру которой можно представить следующим образом:
INSERT INTO <имя таблицы> VALUES (<значение 1>,< значение 2>,…,< значение N>);
Построим пример запроса для вставки новой записи с данными в таблицу. Например, надо добавить нового продавца (т.е. вставить новую запись в таблицу Salespeople) со следующими параметрами: код продавца - 1010, фамилия - Бояринов, адрес - Москва, комиссионные - 0.12, телефона - нет, почта - bojar @yandex.ru. Это можно сделать следующим запросом:
В результате работы запроса в таблицу Salespeople вставится новая строка для продавца с кодам «1010» ( см. рис. 42).
Рис. 42. Пример ввода строки данных в таблицу с помощью команды INSERT INTO…VALUES.
В некоторых случаях можно использовать имена столбцов для ввода данных в конкретные поля. Например, если нам надо ввести нового покупателя, о котором известна пока только его фамилия, то для этого можно использовать следующую команду:
INSERT INTO Customers (cname, cnum)
VALUES ("Синичкин", "2007");
В результате выполнения такого запроса в таблицу покупателей добавится новая строка с кодом «2007» (cnum ="2007"), у которой будет заполнен только один столбец cname (cname="Синичкин").
Можно осуществить вставку данных в текущую таблицу, путем выбора данных по запросу из другой таблицы. Например, имеется отдельная таблица «Жители Москвы» (“CitizenOfMoscow”), в которую мы хотим скопировать всех покупателей, которые живут в городе «Москва». Для переноса данных в таблицу CitizenOfMoscow можно создать SQLзапрос следующего вида:
INSERT INTO CitizenOfMoscow
SELECT * FROM Customers WHERE caddress='Москва';
В результате в таблицу CitizenOfMoscow будет добавлено 2-е записи., потому что, только два покупателя живут в городе «Москва»
Корректное выполнение этого запроса предполагает, что таблица CitizenOfMoscow создана до начала его выполнения и структура таблицы CitizenOfMoscow совпадает со структурой таблицы Customers.
Такой режим использования команды INSERT часто используется при обновлении структуры таблицы, когда требуется добавить новый столбец к уже существующей таблице.
Для изменения структуры таблицы и добавления нового столбца можно использовать команду ALTER конструкция которой имеет вид:
Команда ALTER не является стандартной для ANSI, поэтому на практике в Access ее приходится заменять набором команд. Так, например, набор команд на обновление структуры таблицы может состоять из следующих команд:
-создание новой таблицы (CREATE),
- перенос данных в новую таблицу (INSERT совместно с SELECT)
-и удаление старой таблицы (DROP).
Запросы на изменение данных в таблицах
Изменение значений данных в столбцах производится с помощью команды UPDATE, которая имеет следующую конструкцию:
UPDATE <имя таблицы>
SET <имя столбца 1>=<значение>,
<имя столбца 2>=<значение>,…,
<имя столбца N>=<значение>,
WHERE <условие>
Запрос на изменение в Access удобно строить с помощью конструктора в два этапа. Сначала построить простой запрос с условием для отбора строк. Посмотреть результаты отбора и, если, отобранные строки полностью удовлетворяют вашим условиям, трансформировать исходный запрос на запрос в команду UPDATE.
Предположим, мы хотим всем покупателям, которые живут в городе «Москва», изменить рейтинг на 125. Выполним запрос на отбор строк с продавцами, которые живут в городе «Москва»:
SELECT * FROM Customers WHERE caddress = "Москва";
В результате отберутся только две строчки. Теперь выполним команду Запрос®Обновление и снова войдем в режим просмотра SQL-запросов. Запрос на обновление будет выглядеть, как показано ниже:
UPDATE Customers SET
WHERE (((Customers.caddress) = "Москва"));
В оператор SET добавим имя столбца и новое значение и получим полный запрос на обновление содержимого столбца raiting:
UPDATE Customers SET
raiting=125
WHERE (((Customers.caddress)="Москва"));
Таким образом, используя конструктор и просматривая запросы в режиме SQL, можно строить достаточно сложные запросы на обновление.