Sql Scholl
Распечатать страницу
Перейти на главную Карта сайта Отправить сообщение

Обновление и удаление данных

Обновление данных

    Для обновления (модификации) данных какой-либо таблицы используется оператор UPDATE. Этот оператор можно использовать двумя способами:

     •     для обновления определенной строки таблицы;
     •     для обновления всех строк таблицы.

     Рассмотрим каждый из названных способов.

Не пропускайте предложение WHERE

Применять оператор update нужно особенно аккуратно, потому что с его помощью можно ошибочно обновить все строки таблицы. Прочитайте весь раздел, посвященный оператору update, прежде чем использовать этот оператор.

 

Оператор UPDATE И безопасность

Для использования оператора update в СУБД со структурой клиент-сервер могут понадобиться особые права доступа. Прежде чем применять этот оператор, удостоверьтесь в том, что вам предоставлены соответствующие права.

     Оператор UPDATE очень прост в использовании, он состоит из трех основных частей:

     •     имени таблицы, подлежащей обновлению;
     •     имен столбцов и их новых значений;
     •     условий фильтрации, определяющих, какие именно строки должны быть обновлены.

     Рассмотрим простой пример. Допустим, у клиента 1000000005 появился адрес электронной почты, поэтому его запись нужно обновить. Такое обновление можно выполнить посредством следующего оператора:

UPDATE Customers
SET cust_email = 'kim@thetoystore.com'
WHERE cust_id = '1000000005';

     Оператор UPDATE всегда начинается с имени таблицы, подлежащей обновлению. В нашем примере это таблица Customers. Затем используется команда SET, чтобы ввести в столбец новое значение. В нашем случае предложение SET устанавливает определенное значение для столбца cust_email: SET cust_email = 'kim@thetoystore.com'

     Заканчивается оператор UPDATE предложением WHERE, которое сообщает СУБД, какая строка подлежит обновлению. При отсутствии предложения WHERE СУБД обновила бы все строки таблицы Customers, введя в них новый (причем один и тот же!) адрес электронной почты; это, конечно, не то, что требовалось.

     Для обновления нескольких столбцов необходим иной синтаксис:

UPDATE Customers SET cust_contact = 'Sam Roberts', cust_email = 'sam@toyland.com' WHERE cust_id = '1000000006';

     Для обновления нескольких столбцов используется только одна команда SET, и каждая пара столбец-значение отделяется от другой запятой (после имени последнего столбца запятая не ставится). В нашем примере оба столбца, cust_contact и cust_email, будут обновлены для клиента 1000000006.

Использование подзапросов в операторе UPDATE

В операторах update могут быть использованы подзапросы, что дает возможность обновлять столбцы с данными, выбранными посредством оператора select. Вернитесь к разделу, "Использование подзапросов", за дополнительной информацией о подзапросах и их использовании.

Ключевое слово FROM

Некоторые реализации SQL поддерживают предложение from в операторе update, оно может быть использовано для обновления строк одной таблицы данными из другой. Обратитесь к документации своей СУБД и выясните, поддерживает ли она эту особенность.

     Чтобы удалить значения столбца, вы можете присвоить его строкам значения NULL (если определение таблицы позволяет вводить в нее значения NULL). Это можно сделать следующим образом:

UPDATE Customers
SET cust_email = NULL
WHERE cust_id = '1000000005';

     Здесь ключевое слово NULL используется для хранения "никакого" значения в столбце cust email.