Редактирование записей осуществляется оператором UPDATE:
UPDATE <имя таблицы>
SET< список вида <поле> = <выражение> >
[FROM Имя_таблицы (таблиц) ]
[WHERE <условия обновления>]
Замечания:
1. в общем случае в операторе UPDATEдопускается указывать несколько таблиц (например, используется условие на выбор таблицы), но при его выполнении будет затрагиваться только одна таблица.
2. Наличие в этом операторе условия позволяет редактировать сразу множество записей.
1. Пусть изменилось название города одного из поставщиков. В таком случае внести изменения в базу данных можно с помощью следующего оператора:
UPDATE Поставщики
SET Город = 'Новый Ярославец'
WHERE Город = 'Малый Ярославец'
2. Пусть в таблице Поставки у заданного поставщика изменилась цена единицы товара
UPDATE Поставки
SET Цена_ед_товара = '40.50'
WHERE Поставщик = '6'
После выполнения операторов можно просмотреть выполненные обновления:
SELECT* FROMПоставки
Удаление записей осуществляется оператором DELETE.
Упрощённый синтаксис оператора DELETE:
DELETE FROM <имя таблицы>
WHERE <условие>
Наличие в операторе условия позволяет удалять не только одну, но сразу множество записей.
Следует помнить о том, что сначала необходимо удалить соответствующие записи из главной таблицы и только потом – из подчинённых, то есть при удалении записей должна соблюдаться ссылочная целостность данных, основанная на ограничениях внешнего ключа.
Способ удаления строк из родительской таблицы (при наличии ключа в родительской таблице, которому соответствует одна или более строк дочерней таблицы) зависит от правил поддержки ссылочной целостности, указанных во фразах ON UPDATE и ОN DELETE предложения FOREIGN KEY.
Если пользователь предпринимает попытку удалить из родительской таблицы строку, на которую ссылается одна или более строк дочерней таблицы, язык SQL предоставляет следующие возможности:
• CASCADE - выполняется удаление строки из родительской таблицы, сопровождающееся автоматическим удалением всех ссылающихся на нее строк дочерней таблицы;
• SET NULL - выполняется удаление строки из родительской таблицы, а во внешние ключи всех ссылающихся на нее строк дочерней таблицы записывается значение null;
• SET DEFAULT - выполняется удаление строки из родительской таблицы, а во внешние ключи всех ссылающихся на нее строк дочерней таблицы заносится значение, принимаемое по умолчанию;
• NO ACTION - операция удаления строки из родительской таблицы отменяется. Именно это значение используется по умолчанию в тех случаях, когда в описании внешнего ключа фраза on delete опущена.
Те же самые правила применяются в языке SQL и тогда, когда значение потенциального ключа родительской таблицы обновляется.
Задания для самостоятельного выполнения (Лаб. 5)
1. Внести в таблицу Продажи одну новую запись.
2. Внести в таблицу Продажи сразу столько записей, сколько их уже имеется в таблице Продажи. Затем их удалите.
3. Удалить из базы данных все сведения об одном из поставщиков.
4. У одного из клиентов изменилось название города (поле Городдобавить в таблицу Клиенты). Внести соответствующие записи в базу данных.
5. У одного из поставщиков изменился номер телефона. Внести соответствующие записи в базу данных.
6. У телефонов поставщиков и клиентов изменились номера: если первая цифра начиналась с «4», то ее следует заменить на «9». Одним внести изменения в обе таблицы.
7. Начиная с 2011.06.01, в таблицу Продажи были ошибочно внесены неправильные цены на мороженое «Семейное». Исправьте данные в таблице Продажи.
8. Торговая фирма прекратила сотрудничество с двумя поставщиками. Внести соответствующие изменения в базу данных.