Манипуляции данными из базы
Обновление имеющихся данных
Все течет, все изменяется. Если вам не нравится нынешнее положение дел, то надо немного подождать. Через некоторое время существующее положение изменится.
И так как мир постоянно преобразуется, то надо также обновлять и базы данных, с помощью которых моделируются его компоненты. Покупатель, возможно, поменял адрес. Может измениться количество какого-либо товара на складе, будем надеяться не в результате воровства, а потому что товар хорошо расходится. Это типичные примеры тех событий, из-за которых приходится обновлять базу данных.
В языке SQL для изменения данных, хранящихся в таблице, имеется оператор UPDATE (обновить). С помощью одного такого оператора можно изменить в таблице одну строку, несколько или все ее строки. В операторе UPDATE используется следующий синтаксис:
UPDATE имя_таблицы SET столбец_1 – выражение_1, столбец_2 = выражение_2, …, столбец_n = выражение__n [WHERE предикаты];
Предложение WHERE (где) не является обязательным. Оно указывает, какие строки должны обновляться. Если это предложение не используется, то будут обновляться все строки таблицы. В свою очередь предложение SET (установить) указывает новые значения изменяемых столбцов.
Проанализируйте с помощью табл. 6.1 таблицу CUSTOMER (покупатель), имеющую столбцы Name (имя и фамилия), City (город), Area-Code (телефонный код региона) и Telephone (телефон).
Таблица 6.1. Таблица CUSTOMER.
Name | City | AreaCode | Telephone |
---|---|---|---|
Abe Abelson | Springfield | (714) | 555-1111 |
Bill Bailey | Decatur | (714) | 555-2222 |
Chuck Wood | Philo | (714) | 555-3333 |
Don Stetson | Philo | (714) | 555-4444 |
Dolph Stetson | Philo | (714) | 555-5555 |
Время от времени списки покупателей изменяются, по мере того как эти люди переезжают, изменяются номера телефонов и т.д. Предположим, что Эйб Эйбелсон (Abe Abelson) переехал из Спрингфилда в Канкаки. Тогда запись этого покупателя, находящуюся в таблице CUSTOMER, можно обновить с помощью следующего оператора UPDATE:
UPDATE CUSTOMER SET City = 'Kankakee1, Telephone = '666-6666' WHERE Name = 'Abe Abelson1;
В результате его выполнения в записи произошли изменения, которые показаны в табл. 6.2.
Таблица 6.2. Таблица CUSTOMER после обновления одной строки оператором update.
Name | City | AreaCode | Telephone |
---|---|---|---|
Abe Abelson | Kankakee | (714) | 666-6666 |
Bill Bailey | Decatur | (714) | 555-2222 |
Chuck Wood | Philo | (714) | 555-3333 |
Don Stetson | Philo | (714) | 555-4444 |
Dolph Stetson | Philo | (714) | 555-5555 |
Похожий оператор можно использовать, чтобы обновить сразу множество строк. Предположим, что город Файло переживает резкий рост населения и ему теперь требуется собственный телефонный код региона. Все строки покупателей, проживающих в этом городе, можно сразу изменить с помощью одного оператора UPDATE:
UPDATE CUSTOMER SET AreaCode = '(619)' WHERE City = 'Philo';