После создания таблицы и ее заполнения данные можно изменять или обновлять. SQL Server предоставляет несколько методов изменения данных в существующей таблице:
- оператор UPDATE;
API базы данных и курсоры;
- оператор UPDATETEXT.
Обновление работает как с таблицами, так и с представлениями (с некоторыми ограничениями).
Оператор UPDATE способен изменять данные в одной строке, группе строк или во всех строках таблицы или представления. Его также применяют для обновления строк на удаленном сервере с помощью имени связанного сервера или функции OPENROWSET, OPENDATASOURCE или OPENQUERY (если компонент доступа OLE DB, используемый для доступа к удаленному серверу, поддерживает обновление). Оператор UPDATE, который ссылается на таблицу или представление, может изменять данные только в одной таблице в каждый отдельный момент.
SET задает столбцы, которые следует изменить, и их новые значения. Во всех строках, которые соответствуют условию поиска, заданному конструкцией WHERE, значения заданных полей обновляются значениями, заданными в конструкции SET. Если конструкция WHERE не задана, обновляются все строки.
Например, показанный далее оператор UPDATE включает конструкцию SET, которая увеличивает цену книг в таблице NewBooks на 10%:
Конструкция WHERE выполняет две функции:
- задает подлежащие обновлению строки;
- указывает строки исходной таблицы, из которых извлекаются данные для обновления, если также задана конструкция FROM.
Если конструкция WHERE не задана, обновляются все строки таблицы. В следующем примере в операторе UPDATE использована конструкция WHERE, которая обновляет только строки, соответствующие определенному в конструкции условию:
ADO, OLE DB и API ODBC поддерживают обновление текущей строки в результирующем наборе, полученным приложением. Кроме того, при использовании серверного курсора Transact-SQL можно обновлять текущую строку с помощью оператора UPDATE, в который входит конструкция WHERE CURRENT OF. Изменения касаются только той строки, на которой установлен курсор. Курсоры более подробно обсуждаются в главе 7.
SQL Server предоставляет несколько методов для обновления значений типа ntext, text и image:
- относительно небольшие данные задаются в операторе UPDATE так же, как данные типа char, nchar или binary;
- операторыTansact-SQL WRITETEXT и UPDATETEXT позволяют обновить значение типа text, ntext или image;