Как изменить значение поля в sql
Перейти к содержимому

Как изменить значение поля в sql

SQL Запрос на изменение данных UPDATEИзменение значений полей в таблице

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

Пример запроса на изменение всех записей поля «apple» таблицы «fruit» на определенное значение

Пример запроса с WHERE который изменяет определенную запись:

При изменении значения поля можно использовать его текущее значение.
Пример запроса увеличивающего значение поля price в 2 раза:

SET в UPDATE вычисляет выражения слева направо.
Пример запроса который удваивает цену (поле price), а потом уменьшает его на 10:

Запрос UPDATE возвратит количество полей, которые были изменены в этом запросе.
Использование LIMIT позволит изменять заданное количество записей.

Ввод, удаление и изменение значений полей

До сих пор мы просто извлекали самыми разными способами данные из таблиц. Пришло время изучить как они туда попадают.

Значения могут быт помещены и удалены из полей, тремя командами:

  • INSERT — вставка данных
  • UPDATE — изменение данных
  • DELETE — удаление

Ввод значений

Все строки вводятся с использованием команды INSERT. В самой простой форме используется следующий синтаксис:

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

  • Она должна уже быть создана командой CREATE TABLE
  • Она должна иметь четыре столбца, которые совпадают с таблицей торговых агентов в терминах типов данных.

Удаление строк из таблиц

Для удаления строк из таблицы используется команда DELETE. Она удаляет не отдельные значения, а строки целиком. Чтобы удалить все содержание таблицы агентов вы можете ввести команду:

Но я пока не рекомендую Вам этого делать.

Изменение значения поля

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

Теперь мы изучили три команды, которые управляют содержимым БД. Если добавить к этому долгое изучение запросов, то выходит что мы основы SQL уже позади. Что будет дальше? Как говорят в американских шоу: «Дальше вы увидите:»

Изменение данных в SQL

Изменение данных в SQL

Изменение данных Для изменения значений столбцов таблицы применяется оператор UPDATE (изменить, обновить). Чтобы изменить значения в одном столбце таблицы в тех записях, которые удовлетворяют некоторому условию, следует выполнить такой запрос.

UPDATE имяТаблицы SET имяСтолбца = значение WHERE условие;

За ключевым словом SET (установить) следует выражение равенства, в левой части которого указывается имя столбца, а в правой — выражение, значение которого следует сделать значением данного столбца. Эти установки будут выполнены в тех записях, которые удовлетворяют условию в операторе WHERE. Чтобы одним оператором UPDATE установить новые значения сразу для нескольких столбцов, вслед за ключевым словом SET записываются соответствующие выражения равенства, разделенные запятыми.

UPDATE имяТаблицы SET имяСтолбца1 = значение1, имяСтолбца2 = значение2, . , имяСтолбцаN = значениеN WHERE условие;

Например, следующий запрос изменяет фамилию и имя клиента с кодом 5.

UPDATE Customer SET FName= ‘Иван’ , LName= ‘Иванов’ WHERE IdCust = 5

Использование оператора WHERE в инструкции UPDATE не обязательно. Если он отсутствует, то указанные в SET изменения будут произведены для всех записей таблицы.

Так же как и в инструкции DELETE условие в операторе WHERE инструкции UPDATE может содержать подзапросы, в том числе и связанные. Transact-SQL расширяет стандартный SQL, позволяя использовать в инструкции UPDATE предложение FROM (по аналогии с DELETE). Это расширение, в котором задается соединение, может быть использовано вместо вложенного запроса в предложении WHERE для указания обновляемых строк.

Если обновляемый объект тот же самый, что и объект в предложении FROM, и в предложении FROM имеется только одна ссылка на этот объект, псевдоним объекта указывать необязательно. Если обновляемый объект встречается в предложении FROM несколько раз, одна и только одна ссылка на этот объект не должна указывать псевдоним таблицы. Все остальные ссылки на объект в предложении FROM должны включать псевдоним объекта. Предположим, что требуется сделать 5% скидку по тем заказам клиентов, суммарная стоимость которых превышает 1000. Для этого следует изменить значения столбца Price, просто умножить их на 0,95. Однако эти изменения должны быть выполнены, только если суммарная стоимость заказа превышает 1000. Таким образом, в качестве критерия обновления записей в таблице OrdItem может быть задан запрос возвращающий список всех заказов с суммарной стоимостью более 1000.

UPDATE OrdItem SET Price = Price * 0.95 FROM OrdItem o INNER JOIN ( SELECT IdOrd FROM OrdItem GROUP BY IdOrd HAVING SUM (Qty*Price) > 1000) a ON o.IdOrd = a.IdOrd

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

SELECT * FROM OrdItem o INNER JOIN ( SELECT IdOrd FROM OrdItem GROUP BY IdOrd HAVING SUM (Qty*Price) > 1000) a ON o.IdOrd = a.IdOrd

Задание для самостоятельной работы: Сформулируйте на языке SQL запрос имитирующий поступление на склад новой партий определенного товара (Обновление столбца InStock в таблице Product).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *