OpenU.Ru
Далее рассмотрены SQL-запросы, позволяющие вносить изменения в записи базы данных — вставка, редактирование и удаление строк.
Вставка в таблицу базы данных осуществляется с помощью запросов такого типа:
INSERT INTO ТАбЛИЦА (ПОЛЕ_1,ПОЛЕ_2,…,ПОЛЕ_N)
VALUES (ЗНАЧЕНИЕ_1, ЗНАЧЕНИЕ_2,…, ЗНАЧЕНИЕ_N)
В скобках после имени таблицы перечисляются поля, в которые нужно вставить данные, а в скобках после предложения VALUES – значения, которые нужно вставить в соответствующие поля таблицы, перечисленные выше. Вставка осуществляется таким образом, что первое из перечисленных значений помещается в поле, перечисленное в списке полей первым, второе – во второе и т.д. Из всего сказанного можно сделать вывод о том, что значения, перечисленные в предложении VALUES должны быть совместимы с полями таблицы, в которую осуществляется вставка.
Например, добавим в таблицу покупателей новую запись. Для этого напишем запрос следующего вида:
INSERT INTO Buyers (BNum, BName, BTown) VALUES (6, "Маркет", 4)
В результате мы добавили покупателя с номером 6, наименованием «Маркет», с номером города 4.
Нередко вместо предложения VALUES используют запрос типа SELECT, результатом которого является набор значений полей, соответствующих набору перечисленных полей таблицы, в которую осуществляется вставка. Предположим, что в нашей базе данных есть еще одна таблица otherBuyers, точно такая же по структуре, как и таблица Buyers. Добавим в таблицу Buyers все записи из таблицы otherBuyers. Для этого напишем запрос:
INSERT INTO Buyers (BNum, BName, BTown) SELECT * FROM otherBuyers
Структура запроса внесения изменений в записи таблицы выглядит следующим образом:
UPDATE ТАБЛИЦА
SET
ПОЛЕ_1 = ЗНЕНИЕ_1,
ПОЛЕ_2 = ЗНЕНИЕ_2,
…,
ПОЛЕ_N = ЗНЕНИЕ_N
Все изменения, описанные в запросе, коснутся только тех записей, которые удовлетворяют условию, описанному в предложении WHERE. Если нужно внести изменения во всю таблицу, то предложение WHERE не описывают.
Например, увеличим цены товаров в два раза, относящихся к первой группе. Текст запроса будет таким:
UPDATE Goods SET GPrice=GPrice*2 WHERE GTypeNum=1
В предложении WHERE можно использовать подзапросы.
Подзапросы так же можно использовать и в предложении SET после имени поля и знака равенства. Результатом подзапроса должно быть только одно значение, совместимого по типу с полем указанным перед знаком равенства. Например, пересчитаем сумму в таблице покупок, для товара с номером 1.
UPDATE Sells SET SSum= SQnty*(Select Gprice FROM Goods WHERE GNum=1) WHERE GNum=1
Опасность такого запроса заключается в том, что если результатом подзапроса буден несколько значений, то в запрос выполнен не будет. Возникнет ошибка. Поэтому при написании запроса такого типа надо быть уверенным, что результат подзапроса – это одно поле. В силу этих причин в таких подзапросах обычно используются агрегатные функции или инструкция DISTINCT.
Для удаления используются запросы типа Delete:
DELETE FROM ТАБЛИЦА
WHERE УСЛОВИЕ
Предложение WHERE также является дополнительным разделом. Однако без него такие запросы используются редко, так как отсутствие условия означает в удаление всех записей таблицы!
Приведем пример использования запроса типа Delete. Удалим всех покупателей из таблицы покупателей, которые относятся к городу Москва.
DELETE FROM Buyers WHERE BTown IN (SELECT TNum FROM Touns WHERE TName = "Москва")Содержание