* Заявки Update
Публикувано на 30 март 2009 от Филип Петров. Записано в DB.
Заявките от тип UPDATE се използват за обновяване на данни. Базовият синтаксис е:
UPDATE <име на таблица> SET <правило за обновяване> WHERE <условие>;
От примера с базата данни „banks“ можем да направим следните задачи:
1. Добавя по 2% лихва на всички акаунти от тип 1:
UPDATE accounts SET amount = amount + amount*2/100 WHERE type = 1;
2. Дава по 20 лева бонус на клиентите с име ‘Ivan Ivanov’:
UPDATE accounts SET amount = amount + 20 WHERE customer_id IN( SELECT id FROM customers WHERE name = 'Ivan Ivanov' );
3. Дава по 10 лева бонус на всички клиенти, чийто мениджър на акаунт е ‘John Smith’:
UPDATE accounts
SET amount = amount + 10
WHERE customer_id IN(
SELECT id
FROM customers
WHERE bank_mgr = (
SELECT id
FROM employees
WHERE name = 'John Smith'
)
);
4. Променя адреса на клона на банка Societe General в град Paris:
UPDATE branches SET address = '17 cours Valmy' WHERE name = 'Paris' AND bank_code = ( SELECT code FROM banks WHERE name = 'Societe General' );
5. Можем да обновяваме информация и от две таблици. Следната заявка ще даде два лева на клиент с id 2, като същевременно ще въведе и неговия адрес:
UPDATE customers JOIN accounts ON customers.id = accounts.customer_id SET accounts.amount = accounts.amount + 2, address = 'Opalchenska 12' WHERE customers.id = 2;
Ясно е, че при по-свободни таблици имаме и гъвкави възможности чрез използването на LEFT и RIGHT JOIN.
3 коментара за “Заявки Update”
Trackback URI | RSS за коментарите
Пусни коментар
Страници
Категории
- C/C++ (45)
- DB (36)
- Dogs (49)
- Food (7)
- History (8)
- Java (33)
- Lada (41)
- Math (104)
- Metodos (23)
- NetSec (36)
- Other (76)
- Politics (32)
- Probability (13)
- VC++.Net (1)
- XHTML/JS (25)
Нови
- Един виц за капитализма
- Как да получиш целувка?
- Лека разходка на Витоша
- Роко и Берра на училище
- Газова бутилка под багажника на Лада Нива
17 май 2009 на 12:34
5. Можем да обновяваме информация и от две таблици. Следната заявка ще даде два лева на клиент с id 2, като същевременно ще въведе и неговия адрес:
UPDATE customers JOIN accounts
ON customers.id = accounts.id <———-|
SET accounts.amount = accounts.amount + 2, | address = ‘Opalchenska 12′ |
WHERE customers.id = 2; |————|
|
ON customers.id=accounts.customer_id, ina4e ne bi dobavilo +2 kum amount-a na klienta s id 2 ,a prosto na 4oveka zapisan pod id 2 v tablica accounts, koito moje da e nqkoi dr primerno,nali taka?!
17 май 2009 на 13:20
Според мен име грешка в заявка 1.
По този начин не се добавя 2% лихва към акаунтите, а просто сумата в техните сметки става 2% от това, което са имали. За да добавим 2% би трябвало да изглежда така:
UPDATE accounts
SET amount=amount + amount*2/100
WHERE type=1;
17 май 2009 на 13:47
Ясен и RealIam – забележките ви са напълно уместни и сега ще поправя кода :)