Обновление и удаление данных
16. Обновление и удаление данных
16.1. Обновление данных
Для обновления данных какой-либо таблицы используется оператор UPDATE. Этот оператор можно использовать двумя способами:
· для обновления определенной строки таблицы;
· для обновления всех строк таблицы.
Оператор UPDATE нужно применять очень аккуратно, т.к. с его помощью можно ошибочно обновить все строки таблицы.
Для использования этого оператора в СУБД со структурой клиент-сервер могут понадобиться особые права доступа.
Оператор UPDATE состоит из трех основных частей:
· имени таблицы, подлежащей обновлению;
Рекомендуемые материалы
· имен столбцов и их новых значений;
· условий фильтрации, определяющих, какие именно строки должны быть обновлены.
Пример. Нужно обновить запись клиента 1000000005, т.к. у клиента появился адрес электронной почты.
UPDATE Customers
SET cust_email = ‘kim@thetcystore.com’
WHERE cust_id =’1000000005’;
Если не указать WHERE. То были бы обновлены все строки таблицы, причем во все строки был бы записан один и тот же номер электронной почты.
Для обновления нескольких столбцов рассмотрим следующий пример.
UPDATE Customers
SET cust_contact = ‘Sam Roberts’,
cust_email = ‘sam@tpyland.com’
WHERE cust_id =’1000000006’;
В примере два столбца cust_cjntact и cust_tmail будут обновлены для клиента 1000000006.
В операторе UPDATE могут использоваться подзапросы, что дает возможность обновлять столбцы с данными, выбранными посредством оператора SELECT.
Некоторые реализации SQL поддерживают предложение FROM в операторе UPDATE, которое может быть использовано для обновления строк одной таблицы данными другой.
Для удаления значения столбца, можно присвоить его строкам значение NULL, если определение таблицы позволяет вводить в нее значение NULL.
Пример.
UPDATE Customers
SET cust_email = NULL
WHERE cust_id =’1000000005’;
16.2. Удаление данных
Для удаления данных из таблицы применяется оператор DELETE. Его можно использовать двумя способами:
· для удаления из таблицы определенных строк;
· для удаления из таблицы всех строк.
Применять оператор DELETE следует осторожно, потому что можно ошибочно удалить все строки таблицы.
Для использования оператора DELETE в СУБД со структурой клиент-сервер могут понадобиться особые права доступа.
Пример удаления одной строки из таблицы.
DELETE FROM Customers
WHERE cust_id = ’1000000006’;
Предложение WHERE определяет, какие строки должны быть удалены.
Оператор DELETE удаляет строки целиком, в нем нельзя использовать имена столбцов или метасимволы. Для удаления определенного столбца следует использовать оператор UPDATE.
Для удаления значений всех строк таблицы нет необходимости использовать оператор DELETE. Вместо него лучше применять оператор TRUNCATE TABLE, который выполняет то же самое, но делает это намного быстрее, потому что изменения данных не регистрируется.
16.3. Советы по обновлению и удалению данных
Вместе с этой лекцией читают "Стек протоколов TCP-IP".
При обновлении и удалении данных рекомендуется придерживаться следующих советов:
· никогда не выполняйте оператор UPDATE или DELETE без предложения WHERE, если только на самом деле не обновляется или удаляется каждая строка;
· убедитесь в том, что каждая таблица имеет первичный ключ, и используйте его в предложении WHERE;
· прежде чем использовать предложение WHERE с оператором UPDATE или DELETE, сначала надо его проверить с оператором SELECT, чтобы убедиться в том, что оно правильно фильтрует записи;
· необходимо использовать принудительное обеспечение ссылочной целостности данных, чтобы СУБД не позволяла удалять строки, для которых в других таблицах имеются связанные с ними данные;
· некоторые СУБД позволяют администраторам баз данных устанавливать ограничения, препятствующие выполнению операторов UPDATE или DELETE без предложения WHERE, используйте это, если есть в СУБД.