Обновление данных

6.2. Обновление данных

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

Чтобы обновить существующие строки, используйте команду UPDATE. Она требует три части информации:

  1. Имя таблицы и колонки для обновления

  2. Новое значение колонки

  3. Информацию о том какую строку(и) нужно обновить

Хотя SQL не поддерживает такую возможность, но соглано Chapter 5, обычно, для каждой строки предоставляется уникальный идентификатор. Таким образом, не всегда возможно прямое указание строки для обновления. Вместо этого вы можете задать условия, согласно которым и будут обновляться строки. Только если в таблице у вас есть первичный ключ (зависит от того, создавали вы его или нет), вы можете надёжно сослаться на отдельные строки, путём создания условия, которое использует совпадение по первичному ключу. Графические средства работы с базами данных используют этот факт, чтобы позволить вам обновлять отдельные строки.

Например, эта команда обновляет все продукты, у которых значение колонки цены (price) равно 5, на новое значение price, которое равно 10:

UPDATE products SET price = 10 WHERE price = 5;

Может случиться, что в результате работы этой команды будут обновлены ноль, одна или несколько строк. Это не является ошибкой, просто команда может не найти ни одной строки, совпадающей с условием.

Посмотрите внимательно на эту команду: Сперва идёт ключевое слово UPDATE, за которым следует имя таблицы. Имя таблицы может быть указано с названием схемы, в противном случае оно ищется в текущем пути. Затем идёт ключевое слово SET, за которым следует имя колонки, знак равно и новое значение для этой колонки. Новое значение колонки может быть любым скалярным выражением, а не только константой. Например, если вы хотите поднять цену на все продукты на 10%, вы можете сделать так:

UPDATE products SET price = price * 1.10;

Как видите, выражение для нового значения может также ссылаться на существующее в строке значение. Вспомните также о предложении WHERE. Если оно опускается, то это означает, что обновлены будут все строки в таблице. Если оно задано, то обновлены будут только те строки, которые будут удовлетворяют условию, заданному в WHERE. Заметим, что знак равно в предложении SET используется для присваивания, в то время как знак равенства в предложении WHERE для сравнения, но такое поведение не создаёт никаких неоднозначеностей. Конечно, условие WHERE необязательно должно быть сравнением. Доступны и многие другие операторы (см. Chapter 9). Но в итоге выражение должно возвращать логический результат (истина или ложь -- прим.пер.).

Вы можете обновить более чем одну колонку в команде UPDATE, путём перечисления более чем одного присваивания в предложении SET. Например:

UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;

Back to top

(С) Виктор Вислобоков, 2008-2023