Update sql несколько колонок

Содержание
  1. Запросы SQL для обновления данных (UPDATE)
  2. Изменение одного значения
  3. Внесение изменений в несколько строк с условием отбора
  4. Обновление значений в нескольких полях строки
  5. Инструкция UPDATE в T-SQL — обновление данных в Microsoft SQL Server
  6. Как обновить данные в таблицах Microsoft SQL Server?
  7. Описание инструкции UPDATE в T-SQL
  8. Упрощенный синтаксис UPDATE
  9. Примеры использования инструкции UPDATE
  10. Исходные данные для примеров
  11. Пример обновления одного столбца всех строк таблицы
  12. Пример обновления двух столбцов и только некоторых строк таблицы
  13. Пример использования выражений в инструкции UPDATE
  14. Пример обновления данных таблицы на основе данных другой таблицы
  15. Пример обновления данных с использованием подзапроса
  16. Видео-инструкция по обновлению данных в Microsoft SQL Server
  17. Оператор UPDATE стр. 1
  18. Обновление нескольких столбцов в SQL
  19. ОТВЕТЫ
  20. Ответ 1
  21. Ответ 2
  22. Ответ 3
  23. Ответ 4
  24. Ответ 5
  25. Ответ 6
  26. Ответ 7
  27. Ответ 8
  28. Ответ 9
  29. Ответ 10

Запросы SQL для обновления данных (UPDATE)

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

В SQL, изменить запись в таблице БД можно с помощью команды UPDATE. В самом минимальном виде команда обновления данных выглядит следующим образом:

Здесь, UPDATE – команда указывающая, что запрос на обновление данных;

таблица – название таблицы, в которой будет проводиться изменения;

SET – команда, после которой через запятую указываются поля с назначаемыми им значениями;

поле – поле таблицы, в которое будет внесено изменение;

значение – новое значение, которое будет внесено в поле.

Например, если необходимо задать полю во всех строках таблицы значение равное нулю, можно выполнить такой запрос:

Читайте также:  Excel фильтр несколько колонок

В этом случае, поле price абсолютно во всех имеющиеся строках таблицы примет значение 0.

Изменение одного значения

Изменение значения всех полей в таблице необходимо крайне редко. Чаще всего необходимо поменять значение какой-то конкретной записи. Для этого в завершении строки с командой UPDATE будет добавлена директива WHERE, в которой указывается условие, определяющее с какой именно строкой нужно выполнить операцию обновления.

num
(номер товара)
title
(название)
price
(цена)
1 Чайник 300
2 Чашка 100
3 Ложка 25
4 Тарелка 100

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

Теперь, перед операцией изменения полей, будет выбрана строка, удовлетворяющая условию num = 2. Такая строка в таблице одна. В этой стоке цена и будет изменена на значение 150. В результате получим таблицу с измененной ценой товара.

Внесение изменений в несколько строк с условием отбора

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

Например, мы хотим уменьшить в два раза цену всех товаров, которые сейчас стоят от 100 и более. Запрос:

Условие WHERE здесь содержит правило, по которому будут выбраны только товары с ценой равной или более 100, а те товары, цена у которых ниже 100, затронуты запросом не будут.

price = price / 2 – формула, по которой будет вычисляться новая цена товаров. Новая цена будет записана равной старой цене поделенной на два.

В результате выполнения такого запроса получим таблицу с измененными записями:

num
(номер товара)
title
(название)
price
(цена)
1 Чайник 150
2 Чашка 50
3 Ложка 25
4 Тарелка 50

Обновление значений в нескольких полях строки

При необходимости обновлять сразу несколько полей, все поля с их значениями указываются после директивы SET через запятую. Например, нужно изменить название и цену товара с кодом 2 на «утюг», стоимостью 300:

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

Выше приведены основные виды операций обновления. На их основе формируется запросы для решения большинства задач изменения данных в разработке с применением SQL.

Источник

Инструкция UPDATE в T-SQL — обновление данных в Microsoft SQL Server

Всем привет! Сегодня в материале я расскажу о том, как происходит обновление данных в Microsoft SQL Server с использованием языка T-SQL, будет рассмотрена инструкция UPDATE. Иными словами, Вы узнаете, как изменить уже существующие данные в таблицах на SQL Server.

Ранее я уже рассказывал о том, как создаются таблицы, как они изменяются, как происходит добавление данных в эти таблицы, поэтому пришло время рассказать о том, как происходит изменение (обновление) существующих данных.

Заметка!

Упомянутые выше материалы:

Заметка! Для комплексного изучения языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL, в которых используется последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL.

Как обновить данные в таблицах Microsoft SQL Server?

Изменить данные в таблицах Microsoft SQL Server можно с помощью:

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

Поэтому сегодня мы подробно поговорим об инструкции UPDATE.

Описание инструкции UPDATE в T-SQL

UPDATE – инструкция SQL, с помощью которой происходит изменение существующих данных в таблицах.

Важные моменты:

  • Если инструкция UPDATE, т.е. обновление строк, нарушает какое-нибудь ограничение или правило, или новое значение имеет несовместимый тип данных (хотя бы для одной строки), то возникнет ошибка и все изменения отменяются, никакие строки не обновляются;
  • По умолчанию инструкция UPDATE получает монопольную блокировку на целевую таблицу, которую она изменяет, это означает, что пока одна инструкция UPDATE выполняется, т.е. изменяет данные в таблице, другие инструкции не могут изменять данные в этой таблице;
  • Чтобы использовать инструкцию UPDATE, нужны соответствующие разрешения на изменение данных, а также на чтение данных, если инструкция содержит условие WHERE;
  • Если Вам нужно узнать количество строк, которые Вы обновили инструкцией UPDATE, например, для возврата в клиентское приложение или для любых других целей, то для этого Вы можете использовать функцию @@ROWCOUNT.

Упрощенный синтаксис UPDATE

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

UPDATE Целевая таблица SET Имя столбца = Значение

FROM Таблица источник

  • UPDATE – инструкция обновления;
  • Целевая таблица – таблица, данные в которой необходимо изменить;
  • SET – команда, которая задает список обновляемых столбцов. Каждый следующий столбец указывается через запятую;
  • Имя столбца – столбец, в котором расположены данные, которые необходимо изменить;
  • Значение – новое значение, на которое необходимо изменить значение столбца. Можно указывать как конкретное значение, так и расчётное выражение, функцию или подзапрос. Также можно указать ключевое слово DEFAULT, что будет означать, что столбцу необходимо присвоить значение по умолчанию;
  • FROM – секция, которая указывает таблицу, из которой необходимо взять новое значение столбца. Секция может содержать объединение JOIN;
  • Таблица источник – таблица, в которой расположено новое значение столбца;
  • WHERE – условие отбора строк, подлежащих обновлению.

Примеры использования инструкции UPDATE

Сейчас давайте рассмотрим несколько примеров SQL инструкций, которые будут обновлять данные в таблице инструкцией UPDATE.

Исходные данные для примеров

Для начала давайте определимся с исходными данными, чтобы Вы понимали, какие именно данные у нас есть, и что мы будем обновлять.

Также сразу скажу, что в качестве SQL сервера у меня выступает версия Microsoft SQL Server 2017 Express.

Следующая инструкция создает таблицы, которые мы будет использовать в примерах, и добавляет в них данные.

Пример обновления одного столбца всех строк таблицы

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

Для наглядности и удобства отслеживания внесенных изменений я буду во всех примерах перед и после UPDATE посылать простой запрос SELECT, чтобы видеть, какие данные были и какие стали.

Как видите, в итоге получился очень простой запрос на обновление, мы обновили значения в столбце ProductDescription у всех строк на «Товар».

Пример обновления двух столбцов и только некоторых строк таблицы

Теперь давайте обновим два столбца, и конкретизируем строки для обновления, т.е. мы обновим не все строки в таблице, как в предыдущем примере, а только те, которые подходят под указанное нами условие (для примера Category с идентификатором 1).

В этом случае изменились значения столбцов ProductDescription и Price в строках, в которых Category = 1.

Пример использования выражений в инструкции UPDATE

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

В следующем примере в столбец ProductDescription мы добавим дополнительный текст (просто цифру 3), а значение Price мы увеличим в полтора раза. Все это мы сделаем для строки с Category = 2.

Пример обновления данных таблицы на основе данных другой таблицы

Достаточно часто требуется обновить данные одной таблицы на основе данных другой, например, просто скопировать данные. Это можно сделать за счет объединения нужных таблиц в инструкции UPDATE. При этом существует несколько способов объединения, я покажу два.

Для примера здесь мы скопируем название категорий из таблицы Categories, и вставим их в столбец ProductDescription таблицы Goods, объединять будем по идентификатору категории.

Пример обновления данных с использованием подзапроса

В этом примере я покажу, как можно использовать подзапрос в инструкции UPDATE. Для примера мы подсчитаем количество товаров в каждой категории и присвоим полученное значение столбцу ProductDescription.

Для того чтобы узнать количество товаров, мы будем использовать встроенную функцию COUNT, а для преобразования числа в строку — функцию CAST. Фильтровать строки в подзапросе мы будем по идентификатору категории, значение для сравнения будем получать из основного запроса.

Как видите, все отработало так, как мы задумали.

Видео-инструкция по обновлению данных в Microsoft SQL Server

У меня на этом все, надеюсь, материал был Вам полезен, пока!

Источник

Оператор UPDATE стр. 1

Оператор UPDATE изменяет имеющиеся данные в таблице. Команда имеет следующий синтаксис:

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

Если столбец допускает NULL -значение, то его можно указать в явном виде. Кроме того, можно заменить имеющееся значение на значение по умолчанию (DEFAULT) для данного столбца.

Ссылка на «выражение для вычисления значения столбца» может относиться к текущим значениям в изменяемой таблице. Например, мы можем уменьшить все цены портативных компьютеров на 10 процентов с помощью следующего оператора:

Разрешается также значения одних столбцов присваивать другим столбцам. Пусть, например, требуется заменить жесткие диски менее 10 Гбайт в портативных компьютерах. При этом емкость новых дисков должна составлять половину объема RAM, имеющейся в данных устройствах. Эту задачу можно решить следующим образом:

Естественно, типы данных столбцов hd и ram должны быть совместимы. Для приведения типов может использоваться выражение CAST (пункт 5.9).

Если требуется изменять данные в зависимости от содержимого некоторого столбца, можно воспользоваться выражением CASE (пункт 5.9) Если, скажем, нужно поставить жесткие диски объемом 20 Гбайт на портативные компьютеры с памятью менее 128 Мбайт и 40 гигабайтные — на остальные портативные компьютеры, то можно написать такой запрос:

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

Необходимо сказать несколько слов об автоинкрементируемых столбцах. Если столбец code в таблице Laptop определен как IDENTITY(1,1), то следующий оператор

Разумеется, другой строки со значением code = 5 в таблице быть не должно.

Источник

Обновление нескольких столбцов в SQL

Есть ли способ обновить несколько столбцов на сервере SQL так же, как используется оператор insert?

Или что-то вроде этого, а не так:

который может быть довольно утомительным для записи, если у вас есть более 100 столбцов.

ОТВЕТЫ

Ответ 1

«Утомленный путь» — это стандартный SQL и как это делают обычные РСУБД.

С столбцами 100+ у вас, скорее всего, проблема с дизайном. также существуют методы смягчения в клиентских инструментах (например, инструкции UPDATE для генерации) или с помощью ORM

Ответ 2

Это должно работать в большинстве диалектов SQL, исключая Oracle.

И да — это много набрав — это так, как это делает SQL.

Ответ 3

Синтаксис Update table1 set (a,b,c) = (select x,y,x) является примером использования конструкторы row-value, Oracle поддерживает это, MSSQL этого не делает. (Подключить элемент)

Ответ 4

Ваш запрос почти правильный. T-SQL для этого:

Ответ 5

Синтаксис

Пример

Ответ 6

Вы можете попробовать это

Ответ 7

Я пробовал таким образом, и он работает нормально:

Ответ 8

вот что работает:

Значение — столбец из таблицы_2

Ответ 9

Если вам нужно повторно ввести это несколько раз, вы можете сделать то, что я сделал один раз. Получите имена столбцов в строках в листе excel (запишите в конце каждого имени столбца (=), который легко в блокноте ++), с правой стороны сделайте столбец для копирования и вставки вашего значения, которое будет соответствовать новым записям в каждый колонка. Затем справа от них в независимой колонке помещаются запятые как созданные

Затем вам придется копировать ваши значения в средний столбец каждый раз, а затем просто вставлять и запускать

Я не знаю более простого решения

Ответ 10

Я сделал это в MySql и обновил несколько столбцов в одной записи, поэтому попробуйте это, если вы используете MySql в качестве своего сервера:

Источник

Оцените статью