Update where sql пример

Update where sql пример

Базы данных

В этом учебном пособии вы узнаете, как использовать Oracle оператор UPDATE с синтаксисом, примерами и практическими упражнениями.

Описание

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

Синтаксис

Синтаксис оператора UPDATE при обновлении одной таблицы в Oracle/PLSQL:

ИЛИ

Синтаксис Oracle оператора UPDATE при обновлении одной таблицы с данными из другой таблицы:

Параметры или аргументы

column1 , column2 , … column_n
Столбцы, которые вы хотите обновить.

expression1 , expression2 , … expression_n
Новые значения присвоенные для column1 , column2 , … column_n . Так column1 будет присвоено значение expression1 , column2 будет присвоено значение expression2 , и так далее.

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

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

Рассмотрим очень простой пример Oracle UPDATE.

Команда UPDATE

Команда UPDATE — производит изменения в уже существующей записи или во множестве записей в таблице SQL. Изменяет существующие значения в таблице или в основной таблице представления.

Команда UPDATE Синтаксис команды

Синтаксис команды UPDATE

Команда UPDATE. Основные ключевые слова и параметры команды UPDATE

  • schema — идентификатор полномочий, обычно совпадающий с именем некоторого пользователя
  • table view — имя таблицы SQL, в которой изменяются данные; если определяется представление, данные изменяются в основной таблице SQL представления
  • subquery_1 — подзапрос, который сервер обрабатывает тем же самым способом как представление
  • сolumn столбец таблицы SQL или представления SQL, значение которого изменяется; если столбец таблицы из предложения SET опускается, значение столбца остается неизменяемым
  • expr новое значение, назначаемое соответствующему столбцу; это выражение может содержать главные переменные и необязательные индикаторные переменные
  • subquery_2 — новое значение, назначаемое соответствующему столбцу
  • subquery_3 — новое значение, назначаемое соответствующему столбцу

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

Команда UPDATE Пример 1
Изменение для всех покупателей рейтинга на значение, равное 200:

UPDATE Customers SET rating = 200;

Команда UPDATE Пример 2
Замена значения столбца во всех строках таблицы, как правило, используется редко. Поэтому в команде UPDATE, как и в команде DELETE, можно использовать предикат. Для выполнения указанной замены значений столбца rating, для всех покупателей, которые обслуживаются продавцом Giovanni (snum = 1003), следует ввести:

UPDATE Customers SET rating = 200 WHERE snum = 1001;

Команда SQL UPDATE Пример 3
В предложении SET можно указать любое количество значений для столбцов, разделенных запятыми:

UPDATE emp SET job = ‘MANAGER’, sal = sal + 1000, deptno = 20 WHERE ename = ‘JONES’;

Команда UPDATE Пример 4
В предложении SET можно указать значение NULL без использования какого-либо специального синтаксиса (например, такого как IS NULL). Таким образом, если нужно установить все рейтинги покупателей из Лондона (city = ‘London’) равными NULL-значению, необходимо ввести:

UPDATE Customers SET rating = NULL WHERE city = ‘London’;

Команда UPDATE Пример 5
Поясняет использование следующих синтаксических конструкций команды UPDATE:

  • Обе формы предложения SET вместе в одном утверждении.
  • Подзапрос.
  • Предложение WHERE, ограничивающее диапазон модифицируемых строк.

UPDATE emp a SET deptno =
(SELECT deptno FROM dept WHERE loc = ‘BOSTON’), (sal, comm) = (SELECT 1.1*AVG(sal), 1.5*AVG(comm) FROM emp b WHERE a.deptno = b.deptno) WHERE deptno IN (SELECT deptno FROM dept WHERE loc = ‘DALLAS’ OR loc = ‘DETROIT’);

Вышеупомянутое утверждение UPDATE выполняет следующие операции:

  • Модифицирует только тех служащих, кто работают в Dallas или Detroit
  • Устанавливает значение колонки deptno для служащих из Бостона
  • Устанавливает жалованье каждого служащего в 1.1 раз больше среднего жалованья всего отдела
  • Устанавливает комиссионные каждого служащего в 1.5 раза больше средних комиссионных всего отдела
Читайте также:  Как размягчить подошву кроссовок в домашних условиях

Вы должны войти, чтобы оставить комментарий.

Изучаем SQL

  • 1. Введение в SQL
  • 2. Запросы на выборку
  • 3. Условия в запросах
  • 4. Cортировка данных
  • 5. Вставка записи
  • 6. Вставка нескольких записей
  • 7. Изменение записи

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

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

UPDATE таблица SET поле = значение

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

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

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

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

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

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

UPDATE goods SET price = 0

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

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

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

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

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

UPDATE goods SET price = 150 WHERE num = 2

Читайте также:  Как убрать единицу с настроек iphone

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

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

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

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

UPDATE goods SET price = price / 2 WHERE price >= 100

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

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

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

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

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

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

UPDATE goods SET title = "утюг" , price = 300 WHERE num = 2

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

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

Еще материалы из этого раздела

Комментарии

Добрый день!
А можно ли сделать так:
UPDATE goods SET title, price = 100 WHERE num = 2

То есть присвоить двум полям одно значение?

Добрый день, Анастасия.
Простейший вариант:
UPDATE goods SET price = (RAND() * 100) WHERE num = 2

Здесь назначается случайное число до 100, так как функция RAND() вернет дробное от 0 до 1. Поэтому еще стоит обратить внимание на тип поля, когда в БД запись заносится. В данном случае, без округления, вещественное может быть записано.

Добрый день, Василий.
Одна строка таблицы — это одна запись. Если вы хотите исправить в одной записи таблице (строке таблицы), то так и будет:
UPDATE goods SET title = "утюг", price = 300 WHERE num = 2

title = "утюг", price = 300 — для каждого столбца строки.

Добрый день, Василий.

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

Читайте также:  Что такое cwm на андроиде

Подобное решение, как мне кажется применимо, например, в обновлении прайс-листа. Но, т.к. задача не часто выполнимая, то нет смысла усложнять ее, пусть даже для повышения скорости выполнения. Хотя все зависит от конкретных условий.

Надеюсь, я ответил на ваш вопрос, Василий.

Есть простая таблица в sql. И по нажатию на кнопку сохранить выполняется сохранение изменений. Запрос такой:
$query = "UPDATE `comp` SET `comp_login`= ‘$comp_login’, `comp_name` = ‘$comp_name’, `see` = ‘$see’, `p_status` = ‘$p_status’, `comp_text` = ‘$comp_text’ WHERE `id_comp` = ‘$id_comp’ AND `id_clients` = ‘$id_clients’";
Значения переменных берутся с пост запроса. Примерно такие: $comp_login = mysql_real_escape_string($request[‘comp_login’]);

Вопрос: Мне нужно знать была ли обновлена строка. Даже если ничего не было изменено, то тоже нужно вернуть истину.
Если проверить так: if(mysql_affected_rows() >0) , то возвращается ложь, если ничего не было изменено.

А if(mysql_affected_rows() == -1) выполняется только, если есть конкретные ошибки. Т.е. в таблице есть стpока enum со значениями ‘0’,’1′. Если я в это поле отправляю текст, то ставит 0 и пишет нет ошибки.

Как обычно проверяют такие условия?

А можете ли помочь с таким вопросом:
Есть сайт технической поддержки. И есть пользователи, которые оставляют на нем заявку в компанию. На нем есть таблица с полями: id_client(id пользователя AI, PK), name_client(Имя потльзователя), status(один ко многим), date_r(дата регистрации).

Статусы у всех пользователей будут разные. Например:
у пользователя 1: открыто, отменено, закрыто, передано, принято.
у пользователя 2: открыто, отменено, закрыто, исполнено, в ожидании.
у каждого клиента должны быть видны несколько статусов для выбора (только ему принадлежащие), а у другого клиента (другие статусы, принадлежащие именно ко второму клиенту)

Статусы в любое время могут добавляться( не удаляются).
Я пока придумал только так:
1. вариант:
Вторая таблица такая: id_status, id_client, open, close, cancelled, sent, accepted.
id_status — AI PK, id_client — указывает на первую таблицу на пользователя, другие поля сами статусы и имеют значение enum: ‘0’, ‘1’ — в зависимости присутствует для пользователя ставиться 0 или 1.

Когда необходимо добавлять статус какому либо клиенту сначала ставлю 1 для нужного пользователя, а для всех других проставляю 0.
2 Вариант.
Во второй таблице statuses (id_statuses, name_status) записаны все статусы. В таблице пользователя в поле status записать несколько значений id_statuses разделенных разделителями, которые принадлежат ему.

Может можно реализовать попроще?

Добрый день, Иван.
Не знаю, правильно ли я понял вопрос.
Я бы сделал гораздо больше таблиц: пользователи, статусы, заявки, статусы_заявки. Последняя в случае, если одной заявке может соответствовать несколько статусов. Если нет, то она не нужна.

Например, если нужно чтобы пользователю могло быть назначено несколько статусов, то: сама таблица пользователя (id, имя, прочее), список_статусов (id, название, . ), статусы_пользователя (id, id_пользователя, id_статуса). Таим образом у вас будет обеспечена и целостность данных и не будет в таблицах не будет избыточности.

Ссылка на основную публикацию
Suplbiz a akamaihd net
Supl.biz — платформа для малого и среднего бизнеса, которая помогает компаниям России и стран СНГ покупать и продавать любые товары...
Php прочитать содержимое файла
В этой заметке я покажу, как средствами PHP можно открыть файл, прочитать его содержимое и вывести эти данные на экран....
Php чтение файла в массив
(PHP 3, PHP 4, PHP 5) file - Читает содержимое файла и помещает его в массив Описание Данная функция идентична...
Sv cheats 1 r drawothermodels 2 noclip
Читы для кс го Чит — какой-либо способ получить нечестное преимущество в компьютерных играх либо с помощью встроенных в игру...
Adblock detector