Опубликован: 16.01.2007 | Уровень: для всех | Доступ: свободно
Лекция 6:

Логические операторы

< Лекция 5 || Лекция 6: 123456 || Лекция 7 >

Изменение записей

Команда 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. приведен результат запроса.

Данные обновлены

Рис. 6.15. Данные обновлены

Можно проверить эту операцию, выводя данные из таблицы.

select salary, perks from
employee_data WHERE
title = 'директор';

На рис. 6.16. приведен результат запроса.

Данные обновлены

Рис. 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. приведен результат запроса.

Данные обновлены

Рис. 6.17. Данные обновлены

Важно также перед выполнением изменений внимательно изучить часть оператора с условием, так как легко можно изменить не те данные. Оператор UPDATE без условий изменит все данные столбца во всех строках. Надо быть очень осторожным при внесении изменений.

Задания

  1. Измените фамилию Чащина на Петрова. Внесите соответствующие изменения в базу данных.
  2. Название должности "программист мультимедиа" необходимо изменить на "специалист по мультимедиа".
  3. Увеличьте зарплату всем сотрудниками (кроме директора) на 10000.

Возможные решения

  1. 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;
  2. mysql> update employee_data set
        -> title = 'специалист по мультимедиа'
        -> where title = 'программист мультимедиа';
  3. mysql> update employee_data set
        -> salary = salary + 10000
        -> where title != 'директор';
< Лекция 5 || Лекция 6: 123456 || Лекция 7 >
Александра Каева
Александра Каева
Диляра Кенжебай
Диляра Кенжебай