Обновление данных в таблицах SQL – одна из базовых операций, с которой предстоит столкнуться пользователю при работе с СУБД MySQL. В качестве обновления (update) подразумевается изменение значений в ранее созданных и на текущий момент существующих записях таблицы. Возможно несколько вариантов реализации:
- изменение значений полей в группе строк;
- корректировка поля для отдельной строчки.
Чтобы уметь работать с облачными и локальными базами данных, пользователям необходимо изучить синтаксис SQL-команд. Далее предстоит рассмотреть основы обновления данных в заданной таблице. Необходимо изучить различные варианты применения update в MySQL. Эта информация будет особо полезна новичкам, но и опытным пользователям она тоже пригодится.
SQL и MySQL
Перед изучением табличных обновлений необходимо понять, что собой представляют MySQL и SQL. Связано это с тем, что новички не всегда знают, с чем им предстоит работать.
SQL – язык запросов. Стандарт для работы с таблицами в базах данных. Его можно использовать не только для обновления, но и для других операций. Примеры – выборка, удаление. Язык структурированных запросов позволяет работать с большим объемом информации. Происходят соответствующие операции в специальных средах. Они называются «системы управления БД».
MySQL – это и есть СУБД. Представляет собой свободную реляционную систему управления БД. Это – наиболее распространенный продукт для малого и среднего бизнеса. В основном используется в качестве отдельного сервера. К нему обращаются локальные и удаленные клиенты.
В официальный дистрибутив MySQL включена собственная библиотека для работы внутреннего сервера. Вместе с ней удастся подключать к СУБД автономные приложения и программы.
Задачи SQL
Задачами SQL-запросов (queries) являются такие операции как:
- Извлечение запрашиваемых сведений из ячеек таблиц баз данных. Происходит это через запрос, отправляемый пользователем.
- Операции с данными. Сюда можно отнести добавление новых компонентов в таблицу, обновление, удаление, сортировку.
- Идентификация информации из БД. Речь идет об определении отдельно взятых компонентов. Пример – числа в тесте используются в качестве целых чисел для дальнейшей обработки.
- Управление имеющимися информационными таблицами.
- Защита и шифрование таблиц.
Синтаксис SQL делится на несколько частей: для решение семантических задач, для непосредственной организации управления информацией в БД и для выдачи пользователям прав на отдельные единицы данных.
Форма записи обновления
Далее предстоит рассмотреть особенности обновления данных при помощи SQL запросов. Для этого нужно изучить специальный оператор, а также форму его представления.
Ключевой оператор обновления в SQL – update. Обновить таблицу удастся последовательно от первой до последней строчки по порядку. В зависимости от типа обновления в MySQL нужно выделить два синтаксиса для update в SQL. Первый вариант используется для работы с одной таблицей, второй – для нескольких.
Одна таблица
В случае, когда необходимо обновить информацию в одной таблице, рекомендуется использовать следующую форму записи:
Обязательным параметром здесь служит только SET assignment_list. Он указывает на то, какие столбцы нужно изменить, а также способ внесения изменений.
К необязательным параметрам в операторе update относят:
- Low_Priority. Если он указан, то обновление будет отложено до тех пор, пока другой клиент не решит посмотреть информацию в таблице.
- Ignore – сценарий, который не прерывает выполнение update from даже при возникновении ошибок. Если появляются дубликаты в столбце с уникальным ключом, то строки не обновляются.
- Where where_condition – оператор, задающий условия обновления данных. Если здесь нет никаких параметров, update будет применяться для всех строк в указанной таблице.
- Order by. Этим выражением устанавливается сортировка. Строки будут обновляться в заданном порядке.
- Limit row_count – ограничение на количество обновляемых strings. Считаться будут все строки, попадающие под условие were, независимо от факта внесения в них тех или иных изменений.
Это – базовая форма представления оператора update в MySQL. Она применяется только для одной таблицы.
Несколько таблиц
Если же их несколько, при работе с Microsoft SQL Server будет использоваться другая форма записи. Ее syntax выглядит так:
Table references – список tables, с которыми будет применяться update set where/select. Изменения осуществляются так, как написано в assignment_list.
Limit и Order by при желании обновить данные сразу в нескольких таблицах, нельзя. Остальные параметры (where, ignore и low_priority) не являются обязательными. Они работают точно также, как и в случае с одной табличкой БД.
Подготовка примера
Чтобы понять принцип функционирования select from update в MySQL Server, предстоит рассмотреть возможные операции на наглядных примерах (examples). Они будут базироваться на заранее подготовленной БД. Она включает в себя информацию о книжном магазине. Поддерживает несколько табличных хранилищ:
- писатели;
- жанры;
- книги;
- покупки.
Сначала необходимо воспользоваться операторами create table, а также insert into. Они помогут создать author, genre, book и sales.
Получится таблица book:
Здесь такие столбцы:
- book_id – уникальный идентификатор для каждой книжки;
- title – название;
- author_id – идентификатор автора (внешний ключ);
- genre_id – жанр (внешний ключ);
- price – стоимость одного книжного экземпляра;
- amount – количество книжек на складе.
Таблицы genres и author:
А так выглядит sales:
В ней каждая колонка отвечает соответственно за следующие параметры:
- id – уникальный идентификатор;
- book_id – идентификатор книги из таблицы book (внешний ключ);
- count – сколько книг были куплены;
- cost – общая стоимость.
На основе этих таблиц предстоит рассматривать различные варианты использования запросов update в MS Server.
Все строки
Update служит условием обновления всей заданной базы. Для этого его необходимо использовать без параметра where. Пример – в книжном магазине организована акция типа «все за 500». Для отображения этой ситуации у всех книг должна быть фиксированная цена на отметке 500 рублей:
Выглядит это так:
Если попытаться присвоить значения столбца, которые уже находятся в нем, в MySQL ничего не произойдет. Система заметит это и проигнорирует.
При попытке использования значения NULL столбцу, при создании которого было указано NOT NULL, запрос вернет ошибку:
При указании параметра ignore в команде update значение будет изменено на значение по умолчанию. Оно у каждого типа устанавливается свое:
- 0 – для числовых;
- «» — для символьных;
- «нулевое» — для дат.
Это – только один вариант использования update. Он является наиболее простым.
Строки с условием
Изменение строки (string) обычно используется относительно конкретного поля. Полностью обновлять данные в БД требуется крайне редко.
Для изменения записей для одного или нескольких полей команда update используется при условии where. Пример – распродажа книг, который осталось менее 5 штук. Для этого используется такая команда:
Результат обновленной таблички (updated table):
Здесь хорошо заметны изменения. Они вступили относительно Dead Souls и Iliad.
Значения с выражением
Следующий вариант применения update set select – это обновление с заданным выражением. Пример – в магазине проводится акция. Она распространяется на книги русских писателей. Скидка составит 15%.
Для реализации задачи необходимо использовать запрос (query) такого типа:
Результат:
Здесь:
- В таблице имеются всего два русский писателя. Они имеют ID 1 и 3.
- Обновление значений в заданном образце происходит в определенном порядке – слева направо.
Такой запрос сначала увеличит значение amount на единицу, а после – удвоит его:
Теперь ясно, как организовывать update таблицы SQL с условием-выражением.
С Default
Значение строк (records) может быть изменено на значение по умолчанию. Оно будет задаваться при создании или изменении tables. Чтобы выяснить, какие значения в табличке используются по умолчанию, необходимо выполнить специальную команду. Ей служит запрос:
На экране появится такой результат:
Теперь необходимо заменить значения каждого поля amount на DEFAULT. В этом поможет запись update set select:
Изучаемая команда может применяться иначе. Пример – сразу для нескольких столбцов.
Несколько сразу
Один запрос select from update может помочь, когда требуется обновить не одно поле, а несколько. Выглядит это так:
Здесь происходит замена стоимости и количества у строк, со значениями book_id меньше 4.
Ограничения
Еще один пример использования update – это установление ограничения строк при выводе результатов. Для этого необходимо задействовать setting LIMIT.
Здесь происходит update первой строчки. LIMIT не используется для обновления N полей. В результате запроса происходит обработка первых N-строк, которые подойдут под условие Where.
Обновление нескольких таблиц
Далее будут рассмотрены примеры update для нескольких таблиц. Это – самый простой вариант из всех существующих:
Возможны разные варианты использования изучаемой команды. Иногда корректировки устанавливаются путем объединения нескольких табличных компонентов или на основе информации из других элементов БД. Далее все эти варианты будут рассмотрены более подробно.
Объединение Inner Join
Команду (operator) Update можно использовать для обновления информации путем объединения нескольких компонентов БД. Самый простой вариант – это применение для updates INNER JOIN.
Указывает INNER не обязательно. Связано это с тем, что при использовании обновления данных параметр используется по умолчанию.
Объединение «слева»
Еще один вариант объединения – это Left Join. Он применяется с update set select, если требуется именно «левое объединение». Указывать его полностью обязательно.
Пример – изменение на складе количества книг после их непосредственной покупки:
Если магазин продал 3 книжки «Анна Каренина» и одну – Dead Souls, запрос будет выглядеть так:
Если не использовать left join в заданном примере запроса SQL update, на экране появится ошибка. Связано это с тем, что поле amount не может быть отрицательным. При использовании параметра ignore появится следующий результат:
Здесь каждое поле будет уменьшено на 3. Результат будет ошибочным.
Условные операторы
Update set select (обновление) может производиться через условные операторы:
- if;
- case;
- ifnull;
- coalesce.
Case используется для проверки истинности выбора условий. В зависимости от полученного результата вернут один из нескольких вариантов значений. Синтаксис при работает с таким update from окажется таким:
Результат в example:
При помощи функции IF каждый раз в зависимости от условного выражения будет возвращаться одно из двух значений. Пример – если у книги жанр 4, ее стоимость уменьшается на 200 рублей. В противном случае ценник остается прежним:
Через IFNULL оператор update проверит значение выражения. Если оно NULL, возвращается определенный «параметр». В противном случае – самое выражение. Пусть одно значение в заданной таблице окажется нулевым:
Оно должно быть заменено на 0. Соответствующий запрос должен выглядеть так:
При помощи COALESCE можно указывать несколько значений, которые может принимать функция. Работает подобно IFNULL.
С сортировкой
Select from и update – базовые операции для работы с таблицами. Их обновление возможно. Данный процесс помогает в ситуациях, когда изменения вступают в силу относительно поля с уникальным ключом.
Если захочется сдвинуть id на единицу, изменив первую строчку, получится две строки, у которых Id = 2. Это вызовет ошибку. При добавлении order by и проведении обновления с конца, запрос будет успешно выполнен:
Но и это еще не все. Можно использовать select from и update для обновления на основе информации из других таблиц.
На основе других таблиц
В условии Where можно использовать вложенные команды – from и select. Вот – пример, в котором сначала sets индикатор жанра “Epic poetry”, а затем на основе соответствующего значения происходит отбор строки для обновления:
Чтобы выбрать значения, которые требуется изменить, используется запрос:
Требуется изменить стоимость всех книг, которых менее 5 штук на складе, на минимальную сумму продажи. Она будет равна 480. Обновить таблицу из самой себя не получится. Поэтому придется объединить компоненты между собой:
Все это – основы работы с SQL. Лучше понимать запросы, primary key, tables и даже изучить T-SQL с нуля помогут специальные дистанционные компьютерные курсы. Они прекрасно совмещаются с карьерой и учебой, а в конце выдается электронный сертификат, подтверждающий спектр приобретенных навыков и умений.
Прокачать навыки работы с базами данных можно на курсах Otus.