Символы операций, применяемых в секции SET
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

Операция Назначение
= Присвоить значение
=default Присвоить значение по умолчанию
+= Присвоить сумму (конкатенацию для символьных данных)
-= Присвоить разницу
*= Присвоить произведение
/= Присвоить частное
%= Присвоить остаток от деления
&= Присвоить результат побитового логического AND
^= Присвоить результат побитового логического XOR
|= Присвоить результат побитового логического OR

На рис. 10.3 приведен пример оператора UPDATE, в секции SET которого содержатся два разделенных запятой выражения. Первое выражение интерпретируется как запись в столбец AUDITORIUM_ CAPACITY произведения значения столбца AUDITORIUM_ CAPACITY на число 1.2. Второе – как запись в столбец AUDITORIUM_ NAME результата конкатенации значения столбца AUDITORIUM_ NAME со строкой +20%.

 

Рис. 10.3. Изменение значений в столбцах AUDUTORIUM_ CAPACITY
 и AUDITORIUM_ NAME во всех строках таблицы AUDITORIUM

 

Рис. 10.4. Применение ключевого слова DEFAULT для изменения значений
 в столбцах GENDER и PULPIT таблицы TEACHER

Пример на рис. 10.4 демонстрирует операцию присвоения значения по умолчанию для столбцов PULPIT и GENDER таблицы TEACHER (рис. 10.5).

 

Рис. 10.5. Информация о структуре и свойствах таблицы TEACHER



Секция FROM

Принцип применения секции FROM оператора UPDATE аналогичен принципу применения второй секции FROM оператора DELETE: строки целевой таблицы, связанные JOIN-соединением с другими таблицами, являются исходными для выполнения изменений, определенных выражениями в секции SET. В том случае, если в операторе UPDATE секция FROM не используется, это равносильно секции FROM, в которой указывается только одна целевая таблица.

На рис. 10.6, 10.7 приведен пример, демонстрирующий применение секции FROM оператора UPDATE.

Вначале (рис. 10.6) c помощью конструкции SELECT … INTO создается временная таблица с именем #Механики_с_оценкой<10, которая заполняется строками, сформированными в результате многотабличного SELECT-запроса с последующей WHERE-фильтрацией. Второй оператор SELECT выводит значения в столбце NOTE таблицы PROGRESS из строк, связанных JOIN-соединением с строками временной таблицы.

Затем (рис. 10.7) выполняется оператор UPDATE, использующий в секции FROM JOIN-соединение с временной таблицей, аналогичное применяемому во втором SELECT-запросе на рис. 10.6. Выражение в секции SET увеличивает значение в столбце NOTE на 1. Второй оператор SELECT на рис. 10.7 совпадает со вторым SELECT-оператором на рис. 10.5 и демонстрирует результат успешного выполнения оператора UPDATE.

 

 

Рис. 10.6. Формирование временной таблицы, для применения в секции
 FROM оператора UPDATE

 

Рис. 10.7. Применение секции FROM оператора UPDATE


Секция WHERE

Секция WHERE выполняется после секции FROM и содержит логическое выражение для фильтрации ее результирующего набора строк. Если секция FROM не применяется, то логическое выражение используется для фильтрации строк целевой таблицы. Отобранные таким образом строки изменяются в соответствии с выражениями в секции SET.

На рис. 10.8 представлен пример оператора UPDATE, использующего секцию WHERE. При этом в секции WHERE применяется коррелированный подзапрос к временной таблице, созданной в сценарии, показанном на рис. 10.6. Псевдоним целевой таблицы для применения его в подзапросе можно задать в секции FROM (рис. 10.9).

Рис. 10.8. Применение секции WHERE с коррелируемым подзапросом
в операторе UPDATE

 

Рис. 10.9. Применение псевдонима целевой таблицы в секции WHERE
 оператора UPDATE

Обратите внимание на то, что результат выполнения операторов UPDATE, представленных на рис. 10.8 и 10.9 аналогичен результату выполнения оператора UPDATE на рис. 10.7.

Совместное применение секций FROM и HERE (рис. 10.10) позволяет избежать создания временной таблицы (рис. 10.6, 10.7) и получить аналогичный результат.

 

Рис. 10.10. Совместное использование секций FROM и WHERE оператора UPDATE



Опция TOP

Как и в других DML-операторах, опция TOP позволяет ограничить количество строк, на которое распространяется действие оператора. На рис. 10.11 приведен пример оператора UPDATE, изменяющего только три первые, выбранные с помощью секций FROM и WHERE, строки.

Рис. 10.11. Применение опции TOP оператора UPDATE

Как и в случае с оператором DELETE, количество строк может быть задано в процентах. Кроме того, следует помнить, что в общем случае невозможно заранее предугадать, какие строки будут выбраны для изменения.

Секция OUTPUT

На рис. 10.12 и 10.13 приведены примеры использования секции OUTPUT для формирования результирующего набора в стандартный поток вывода (рис. 10.12) и во временную таблицу (рис. 10.13).

 

Рис. 10.12. Применение секции OUTPUT оператора UPDATE

 

 

Рис. 10.13. Применение секции OUTPUT оператора UPDATE с выводом
 результирующего набора во временную таблицу

 

Применение секции OUTPUT аналогично ее применению в других DML-операторах. Единственное отличие заключается в возможности использования префиксов INSERTED и DELETED (рис. 10.12. 10.13) в выражениях секции. С помощью INSERTED можно вывести в результирующий набор новые значения (измененные) в столбцах таблицы, а с помощью DELETED – старые (до изменения).

 


Дата: 2019-02-25, просмотров: 202.