(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 9: Język manipulowania danymi DML (Data Manipulation Language)
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Wstawianie krotek do relacji INSERT INTO nazwa_relacji VALUES (wartość, wartość,...); INSERT INTO nazwa_relacji VALUES (wartość, wartość,...); INSERT INTO nazwa_relacji [ (atrybut 1,..., atrybut n )] VALUES (wartość 1,..., wartość n ); INSERT INTO nazwa_relacji [ (atrybut 1,..., atrybut n )] VALUES (wartość 1,..., wartość n ); INSERT INTO zespoly VALUES (60, MULTIMEDIA, Piotrowo 3); INSERT INTO zespoly VALUES (60, MULTIMEDIA, Piotrowo 3); INSERT INTO zespoly VALUES (&nr, &nazwa, &adres); INSERT INTO zespoly VALUES (&nr, &nazwa, &adres);
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Wstawianie krotek do relacji cd. INSERT INTO nazwa_relacji [(atrybut 1,..., atrybut n )] SELECT [(atrybut 1,..., atrybut n )] FROM relacja 1 [relacja 2,...]; INSERT INTO nazwa_relacji [(atrybut 1,..., atrybut n )] SELECT [(atrybut 1,..., atrybut n )] FROM relacja 1 [relacja 2,...]; INSERT INTO prac30 (numer_prac, nazwisko_prac, numer_zesp) SELECT id_prac, nazwisko, id_zesp FROM pracownicy WHERE id_zesp=30; INSERT INTO prac30 (numer_prac, nazwisko_prac, numer_zesp) SELECT id_prac, nazwisko, id_zesp FROM pracownicy WHERE id_zesp=30;
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Modyfikowanie krotek relacji UPDATE relacja SET atrybut 1 = wartość, atrybut 2 = wartość [,...] [WHERE warunek]; UPDATE relacja SET atrybut 1 = wartość, atrybut 2 = wartość [,...] [WHERE warunek]; UPDATE pracownicy SET etat = 'PROFESOR', placa_pod = placa_pod * 2.5 WHERE nazwisko = 'KOSZLAJDA'; UPDATE pracownicy SET etat = 'PROFESOR', placa_pod = placa_pod * 2.5 WHERE nazwisko = 'KOSZLAJDA'; awansuj pracownika o nazwisku KOSZLAJDA na stanowisko profesora i zwiększ jego płacę podstawową 2.5 razaawansuj pracownika o nazwisku KOSZLAJDA na stanowisko profesora i zwiększ jego płacę podstawową 2.5 raza
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Modyfikowanie krotek relacji cd. UPDATE relacjaA SET atrybutA 1 = (SELECT atrybutB 1 FROM relacjaB [WHERE...]) [WHERE warunek]; UPDATE relacjaA SET atrybutA 1 = (SELECT atrybutB 1 FROM relacjaB [WHERE...]) [WHERE warunek]; UPDATE relacjaA SET (atrybutA 1, atrybutA 2 ) = (SELECT atrybutB 1, atrybutB 2 FROM relacjaB [WHERE...]) [WHERE warunek]; UPDATE relacjaA SET (atrybutA 1, atrybutA 2 ) = (SELECT atrybutB 1, atrybutB 2 FROM relacjaB [WHERE...]) [WHERE warunek];
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Modyfikowanie krotek cd. Zwiększ płacę podstawową do wartości równej 1,2 średniej płacy podstawowej w zespole pracownika oraz zwiększ płacę dodatkową do wartości równej maksymalnej płacy dodatkowej w zespole pracownika. Operacji dokonaj tylko dla pracowników zatrudnionych po 1992 roku.Zwiększ płacę podstawową do wartości równej 1,2 średniej płacy podstawowej w zespole pracownika oraz zwiększ płacę dodatkową do wartości równej maksymalnej płacy dodatkowej w zespole pracownika. Operacji dokonaj tylko dla pracowników zatrudnionych po 1992 roku. UPDATE pracownicy a SET (a.placa_pod, a.placa_dod) = (select AVG(placa_pod)*1.2, MAX( NVL( placa_dod,0)) FROM pracownicy WHERE id_zesp = a.id_zesp ) FROM pracownicy WHERE id_zesp = a.id_zesp ) WHERE a.zatrudniony > '92/12/31'; UPDATE pracownicy a SET (a.placa_pod, a.placa_dod) = (select AVG(placa_pod)*1.2, MAX( NVL( placa_dod,0)) FROM pracownicy WHERE id_zesp = a.id_zesp ) FROM pracownicy WHERE id_zesp = a.id_zesp ) WHERE a.zatrudniony > '92/12/31';
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Usuwanie krotek relacji DELETE [FROM] relacja [WHERE warunek]; DELETE [FROM] relacja [WHERE warunek]; DELETE pracownicy WHERE nazwisko IN ('BIAŁY', 'KONOPKA'); DELETE pracownicy WHERE nazwisko IN ('BIAŁY', 'KONOPKA');
(c) 1999, Instytut Informatyki Politechniki PoznańskiejZadania 4-1. Wstaw do relacji PROJEKTY następujące krotki: nazwa atrybutu ID_PROJEKTUOPIS_PROJEKTUDATA_ROZPOCZECIADATA_ZAKONCZENIAFUNDUSZ ID_PROJEKTUOPIS_PROJEKTUDATA_ROZPOCZECIADATA_ZAKONCZENIAFUNDUSZwartości1 Indeksowanie metod 02-JAN-9331-MAR wartości1 02-JAN-9331-MAR wartości2 Sieci kręgosłupowe 15-APR-9415-FEB wartości2 15-APR-9415-FEB insert into PROJEKTY values (1, 'Indeksowanie metod', '02-JAN-93', '31-MAR-95', ); insert into PROJEKTY values (1, 'Indeksowanie metod', '02-JAN-93', '31-MAR-95', ); insert into PROJEKTY values(2, 'Sieci kręgosłupowe', '15-MAR-94','15-FEB-95', ); insert into PROJEKTY values(2, 'Sieci kręgosłupowe', '15-MAR-94','15-FEB-95', );
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Zadania cd. nazwa atrybutu ID_PROJEKTUNR_PRACOWNIKAODDOSTAWKAROLA ID_PROJEKTUNR_PRACOWNIKAODDOSTAWKAROLAwartości JAN-9331-MAR ANALITYKwartości JAN-9331-MAR ANALITYKwartości FEB-9331-MAR KIERUJACYwartości FEB-9331-MAR KIERUJACY insert into PRZYDZIALY values(1,170,'02-JAN-93','31-MAR-95',1000,'ANALITYK'); values(1,170,'02-JAN-93','31-MAR-95',1000,'ANALITYK'); values(1,140,'01-FEB-93','31-MAR-95', 1500,'KIERUJACY'); insert into PRZYDZIALY values(1,140,'01-FEB-93','31-MAR-95', 1500,'KIERUJACY'); 4-2. Wstaw do relacji PRZYDZIALY następujące krotki:
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Zadania cd. 4-3.Zmodyfikuj relację PRZYDZIAŁY przez podniesienie stawki pracownika o numerze 140 do wysokości zł. update przydzialy set stawka = 1750 where nr_pracownika = 140; where nr_pracownika = 140; 4-4. Zmień datę zakończenia projektu: Sieci kręgosłupowe na 15 czerwca 95r. i powiększ fundusz tego projektu do zł. update projekty set data_zakonczenia = '15-JUN-95', data_zakonczenia = '15-JUN-95', fundusz = fundusz = where opis_projektu = 'Sieci kregoslupowe';
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Zadania cd. 4-5.Usuń informacje o projektach, do których nie ma przydziałów. delete from projekty where id_projektu not in (select distinct id_projektu from przydzialy); from przydzialy);