Сложные Примеры Манипуляции Данными.
6. Сложные Примеры Манипуляции Данными.
Операторы манипуляции данными - самая мощная составляющая SQL.
Следующий пример ликвидирует одинаковые строки в таблице kadry. select unique * from kadry into temp kd delete from kadry where 1=1 insert into kadry select * from kd drop table kd
Следующий пример изменяет информацию в строках по значению ключа:
- Tаблица b содержит (kl int, pole char(20)); причем все kl различны
- В таблице kadry заменить kadry.dolvnostx на b.pole в строках где kadry.tabnom=b.kl
DELETE FROM kadry WHERE tabnom in (SELECT kl FROM b) INSERT INTO kadry SELECT * FROM kd DROP TABLE kd
Ту же самую операцию можно проделать с помощью одного оператора UPDATE, использующего подзапрос: UPDATE kadry SET dolvnostx=(select pole from b where kadry.tabnom=b.kl) WHERE tabnom IN (select kl from b)
Пример изменяет информацию в строках по значению ключа при выполнении условий , наложенных на меняемые строки:
## | ||||||||
fio John Piter Bob | har лентяй агент КГБ хороший | cen $300 $25 | fio John ... Piter ... Bob Ronny ... | ... | har трудяга агент CIA плохой плохой | ... | cen $600 $45 $15 |
|
В таблице cia хранятся сведения о сотрудниках. На основе последних исследований была составлена таблица agent, с поправками к содержанию cia. Строчка будет подменяться, если за новую информацию о сотруднике в таблице agent заплачено больше, чем за хранящуюся в cia. UPDATE cia SET (har,cen)=( (SELECT har,cen FROM agent WHERE cia.fio=agent.fio) ) WHERE fio IN (SELECT fio FROM agent) AND cen < (SELECT cen FROM agent WHERE cia.fio=agent.fio);