* Заявки Update
Публикувано на 30 март 2009 в раздел Бази от Данни.
Заявките от тип 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 за коментарите
Пусни коментар
Категории
- Бази от Данни (52)
- Вероятности (31)
- История (15)
- Кучета (69)
- Лада Нива (96)
- Математика (166)
- Методика (53)
- Общи работи (110)
- ПИК-3 Java (38)
- Политика (41)
- Програмни Среди (1)
- ПТСК (41)
- С/C++ (45)
- Семейни (16)
- Физика (35)
- ХHTML/JS (25)
- Храна (11)
Нови
- Извеждане на няколко произволни реда
- Full-Text търсене с InnoDB в MySQL
- Късметче от кафе
- Пред блока…
- Бушонно табло на Лада Нива
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 – забележките ви са напълно уместни и сега ще поправя кода :)