Учебно-справочное пособие по СУБД Informix

         

Сложные Примеры Манипуляции Данными.



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
SELECT b.kl,b.pole, nomerceh,dolvnostx,zarplata,datarovd FROM kadry, b WHERE kadry.tabnom=b.kl into temp kd

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)
Пример изменяет информацию в строках по значению ключа при выполнении условий , наложенных на меняемые строки:

Таблица agent Таблица cia

##

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);



Содержание раздела