Оператор UPDATE в SQL: разбираем на примерах
Перевод статьи «SQL Update Statement – Update Query in SQL».
Созданная вами таблица в базе данных редко должна оставаться неизменной. Скорее всего записи в ней будут изменяться.
Для осуществления изменений в SQL есть полезный оператор — UPDATE.
Примечание. Если синтаксис, представленный в этой статье, не будет работать, загляните в документацию той реализации SQL, которой вы пользуетесь. В основном все это должно работать в разных реализациях, но могут быть какие-то отличия.
Синтаксис SQL UPDATE
На использовании WHERE стоит сделать ударение. Без этого оборота вы внесете одинаковые изменения во всю таблицу.
Пример SQL UPDATE
У нас есть таблица users :
ID(PK) | NAME | AGE | STATE | |
1 | Paul | 24 | Michigan | paul@example.com |
2 | Molly | NULL | New Jersey | NULL |
3 | Robert | 19 | New York | NULL |
В этой таблице есть несколько неполных записей. Когда пользователи предоставляют нам недостающие сведения, мы добавляем их в таблицу при помощи оператора UPDATE.
Итак, давайте обновим email-адрес при помощи следующего запроса:
Теперь таблица будет выглядеть так:
ID(PK) | NAME | AGE | STATE | |
1 | Paul | 24 | Michigan | paul@example.com |
2 | Molly | NULL | New Jersey | NULL |
3 | Robert | 19 | New York | robert@example.com |
Одновременное обновление нескольких столбцов
В нашей таблице в информации о Молли отсутствуют значения в двух разных столбцах. Для добавления нужных сведений мы можем воспользоваться одним оператором UPDATE, перечислив нужные дополнения через запятую:
Теперь таблица будет выглядеть так:
ID(PK) | NAME | AGE | STATE | |
1 | Paul | 24 | Michigan | paul@example.com |
2 | Molly | 22 | New Jersey | molly@example.com |
3 | Robert | 19 | New York | robert@example.com |
Будьте внимательны при выборе записей для изменений
Это вопрос безопасности. В нашей таблице-примере всего три строки, но в реальной жизни у вас может быть база данных сайта или приложения с сотнями, тысячами и даже миллионами пользователей. И, поверьте, меньше всего вам надо послужить причиной проблем для стольких людей.
Поэтому, прежде чем запускать запрос UPDATE, отошлите запрос SELECT с тем же оборотом WHERE. Вы должны получить в выдаче те записи, которые хотите обновить. Если вдруг получите не то, что ожидалось, — отредактируйте WHERE.
Например, прежде чем отсылать запрос на обновление записи по пользователю Молли, мы можем послать запрос SELECT для проверки нашего оборота WHERE >:
ID(PK) | NAME | AGE | STATE | |
2 | Molly | NULL | New Jersey | NULL |
Этот запрос возвращает нужную запись, так что можно смело посылать запрос UPDATE для добавления данных в таблицу.
Заключение
Если у вас есть таблица с записями, рано или поздно вам, скорее всего, придется какую-нибудь запись обновить. В этой статье мы разобрали, как это делается при помощи SQL-оператора UPDATE.
Инструкция 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 Целевая таблица SET Имя столбца = Значение
FROM Таблица источник
Примеры использования инструкции 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. Редактирование записей в таблице базы данных MySQL
Команда UPDATE
Часто возникает необходимость изменения информации, хранящейся в базе данных. С помощью команды UPDATE вы сможете обновлять данные одной или нескольких колонок в каждой записи таблицы.
Синтаксис запроса на обновление данных.
Для примера заполним таблицу books для хранения книг из условной базы данных Bookstore, которую мы создали в одном из предыдущех постов.
Сначала выберем базу данных, для которой будем выполнять запросы.
Посмотрим какие данные сейчас хранятся в колонках id, title, author, price, discount, amount таблицы books для первых 5 записей.
mysql> SELECT id, title, author, price, discount, amount FROM books LIMIT 5;
+—-+—————————+——————-+———+———-+———+
| id | title | author | price | discount | amount |
+—-+—————————+——————-+———+———-+———+
| 1 | Дубровский | Александр Пушкин | 230.00 | 0 | 4 |
| 2 | Нос | Николай Гоголь | 255.20 | 0 | 7 |
| 3 | Мастер и Маргарита | Михаил Булгаков | 240.50 | 0 | 10 |
| 4 | Мёртвые души | Николай Гоголь | 173.00 | 0 | 3 |
| 5 | Преступление и наказание | Фёдор Достоевский | 245.00 | 0 | 3 |
+—-+—————————+——————-+———+———-+———+
5 rows in set (0.00 sec)
Обновим цену, процент скидки и уменьшим количество на 2 для книги с идентификатором 3.
Теперь проверим как обновились данные.
mysql> UPDATE books
-> SET price=263.00, discount=10, amount=amount-2
-> WHERE id=3;
Query OK, 1 rows affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT id, title, author, price, discount, amount FROM books LIMIT 5;
+—-+—————————+——————-+———+———-+———+
| id | title | author | price | discount | amount |
+—-+—————————+——————-+———+———-+———+
| 1 | Дубровский | Александр Пушкин | 230.00 | 0 | 4 |
| 2 | Нос | Николай Гоголь | 255.20 | 0 | 7 |
| 3 | Мастер и Маргарита | Михаил Булгаков | 263.00 | 10 | 8 |
| 4 | Мёртвые души | Николай Гоголь | 173.00 | 0 | 3 |
| 5 | Преступление и наказание | Фёдор Достоевский | 245.00 | 0 | 3 |
+—-+—————————+——————-+———+———-+———+
5 rows in set (0.00 sec)
Обновление данных для нескольких записей в MySQL
Используя команду WHERE можно задавать сразу несколько записей для обновления данных.
Попробуем добавить скидку в 5% для всех книг под авторством Николая Гоголя, а также в название книги добавим слово «(Акция)».
Запрос на обновление данных, в этом случае, будет выглядеть так:
В результате получим следующие изменения.
mysql> UPDATE books
-> SET discount=5, title=CONCAT(title, » (Акция)» )
-> WHERE author= «Николай Гоголь» ;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> SELECT id, title, author, price, discount, amount FROM books LIMIT 5;
+—-+—————————+———————+———+———-+———+
| id | title | author | price | discount | amount |
+—-+—————————+———————+———+———-+———+
| 1 | Дубровский | Александр Пушкин | 230.00 | 0 | 4 |
| 2 | Нос (Акция) | Николай Гоголь | 255.20 | 5 | 7 |
| 3 | Мастер и Маргарита | Михаил Булгаков | 263.00 | 10 | 8 |
| 4 | Мёртвые души (Акция) | Николай Гоголь | 173.00 | 5 | 3 |
| 5 | Преступление и наказание | Фёдор Достоевский | 245.00 | 0 | 3 |
+———+—————————+———————+———+———-+———+
5 rows in set (0.00 sec)
В результате запроса выше получим одинаковую цену и название для всех книг в таблице.
mysql> UPDATE books SET price=103.90, title= «Барышня-крестьянка» ;
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5 Changed: 5 Warnings: 0
mysql> SELECT id, title, author, price, discount FROM books LIMIT 5;
+—-+————————+———————+———+———-+
| id | title | author | price | discount |
+—-+————————+———————+———+———-+
| 1 | Барышня-крестьянка | Александр Пушкин | 103.90 | 0 |
| 2 | Барышня-крестьянка | Николай Гоголь | 103.90 | 5 |
| 3 | Барышня-крестьянка | Михаил Булгаков | 103.90 | 10 |
| 4 | Барышня-крестьянка | Николай Гоголь | 103.90 | 5 |
| 5 | Барышня-крестьянка | Фёдор Достоевский | 103.90 | 0 |
+—-+————————+———————+———+———-+
5 rows in set (0.00 sec)
Как обновить записи в таблице базы данных MySQL с помощью PHP (PDO)
Перед созданием формы мы обратимся к нашей таблице books и выведем данные, которые в ней хранятся, просто для того чтобы видеть, что содержит таблица и не редактировать ее вслепую.
Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Базы данных
SQL оператор UPDATE
В этом учебном материале вы узнаете, как использовать SQL оператор UPDATE с синтаксисом и примерами.
Описание
SQL оператор UPDATE используется для обновления существующих записей в таблицах.
Синтаксис
Синтаксис для оператора UPDATE при обновлении таблицы в SQL.
Или
Синтаксис SQL оператора UPDATE при обновлении таблицы данными из другой таблицы:
Или
Синтаксис SQL оператора UPDATE при обновлении нескольких таблиц (не разрешен в Oracle):
Параметры или аргументы
Давайте рассмотрим пример, показывающий, как использовать SQL оператор UPDATE для обновления одного столбца в таблице.
В этом примере UPDATE у нас есть таблица customers со следующими данными:
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Johnny | Depp | NULL |
9000 | Russell | Crowe | google.com |
Будет обновлена 1 запись. Выберите данные из таблицы customers еще раз:
Вот результаты, которые вы должны получить.
customer_id | first_name | last_name | favorite_website |
---|---|---|---|
4000 | Justin | Bieber | google.com |
5000 | Selena | Gomez | bing.com |
6000 | Mila | Kunis | yahoo.com |
7000 | Tom | Cruise | oracle.com |
8000 | Joseph | Depp | NULL |
9000 | Russell | Crowe | google.com |
supplier_id | supplier_name | city | state |
---|---|---|---|
100 | Yandex | Moscow | Russian |
200 | Lansing | Michigan | |
300 | Oracle | Redwood City | California |
400 | Bing | Redmond | Washington |
500 | Yahoo | Sunnyvale | Washington |
600 | DuckDuckGo | Paoli | Pennsylvania |
700 | Qwant | Paris | France |
800 | Menlo Park | California | |
900 | Electronic Arts | San Francisco | California |
Теперь давайте продемонстрируем, как использовать оператор UPDATE для обновления более одного значения столбца одновременно. Введите следующую команду UPDATE.
Запросы SQL для обновления данных (UPDATE)
Под обновлением данных в БД подразумевается изменение значений в существующих записях таблицы. При этом возможно как изменение значений полей в группе строк (даже всех строк таблицы), так и правка значения поля отдельной строки.
В SQL, изменить запись в таблице БД можно с помощью команды UPDATE. В самом минимальном виде команда обновления данных выглядит следующим образом:
Здесь, UPDATE – команда указывающая, что запрос на обновление данных;
таблица – название таблицы, в которой будет проводиться изменения;
SET – команда, после которой через запятую указываются поля с назначаемыми им значениями;
поле – поле таблицы, в которое будет внесено изменение;
значение – новое значение, которое будет внесено в поле.
Например, если необходимо задать полю во всех строках таблицы значение равное нулю, можно выполнить такой запрос:
В этом случае, поле 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.
Теперь вы знаете какие однокоренные слова подходят к слову Как написать sql запрос обновление данных в таблице, а так же какой у него корень, приставка, суффикс и окончание. Вы можете дополнить список однокоренных слов к слову "Как написать sql запрос обновление данных в таблице", предложив свой вариант в комментариях ниже, а также выразить свое несогласие проведенным с морфемным разбором.