Логические операторы
Изменение записей
Команда UPDATE выполняет изменение данных в таблицах. Она имеет очень простой формат.
UPDATE имя_таблицы SET имя_столбца_1 = значение_1, имя_столбца_2 = значение_2, имя_столбца_3 = значение_3, ... [WHERE условия];
Как и все другие команды SQL можно вводить ее на одной строке или на нескольких строках.
Рассмотрим несколько примеров.
Предположим, директор увеличил свою зарплату на 20000 и надбавки на 5000. Его предыдущая зарплата была 200000, а надбавки были 50000.
UPDATE employee_data SET salary=220000, perks=55000 WHERE title='директор';
На рис. 6.15. приведен результат запроса.
Можно проверить эту операцию, выводя данные из таблицы.
select salary, perks from employee_data WHERE title = 'директор';
На рис. 6.16. приведен результат запроса.
В действительности предыдущую зарплату знать не требуется. Можно воспользоваться арифметическими операторами. Следующий оператор сделает то же самое, при этом исходные данные знать заранее не требуется.
UPDATE employee_data SET salary = salary + 20000, perks = perks + 5000 WHERE title='директор';
Результат запроса аналогичен рис. 6.15.
В качестве другого примера можно попробовать изменить название должности "разработчик Web" на "программист Web".
mysql> update employee_data SET -> title = 'программист Web' -> WHERE title = 'разработчик Web';
На рис. 6.17. приведен результат запроса.
Важно также перед выполнением изменений внимательно изучить часть оператора с условием, так как легко можно изменить не те данные. Оператор UPDATE без условий изменит все данные столбца во всех строках. Надо быть очень осторожным при внесении изменений.
Задания
- Измените фамилию Чащина на Петрова. Внесите соответствующие изменения в базу данных.
- Название должности "программист мультимедиа" необходимо изменить на "специалист по мультимедиа".
- Увеличьте зарплату всем сотрудниками (кроме директора) на 10000.
Возможные решения
-
mysql> update employee_data SET -> l_name = 'Петрова' -> WHERE l_name = 'Чащина';
Примечание: Если бы были еще сотрудники с фамилией Чащина, то эти записи также были бы изменены. В таком случае может помочь столбец emp_id, так как он содержит уникальные значения. Лучше использовать значение emp_id вместо l_name, как в следующем примере:
mysql> update employee_data SET -> l_name = 'Петрова' -> WHERE emp_id = 4;
-
mysql> update employee_data set -> title = 'специалист по мультимедиа' -> where title = 'программист мультимедиа';
-
mysql> update employee_data set -> salary = salary + 10000 -> where title != 'директор';