1 1. Wyświetl całość informacji z relacji ZESPOLY select * from ZESPOLY; 2. Wyświetl całość informacji z relacji PRACOWNICY select * from pracownicy; 3. Wyświetl nazwiska, etaty i roczne dochody pracowników. select nazwisko, etat, 12* placa_pod from pracownicy; 4. Wyświetl nazwy i sumaryczne miesięczne dochody pracowników (z uwzględnieniem płac dodatkowych) select nazwisko, placa_pod+NVL(placa_dod,0) from pracownicy; 5. Wyświetl całość informacji o zespołach sortując wynik według nazw zespołów select * from zespoly order by nazwa; 6. Wyświetl listę etatów (bez duplikatów) na których zatrudnieni są pracownicy Instytutu. select distinct etat from pracownicy; 7. Wyświetl wszystkie informacje o asystentach pracujących w Instytucie. select * from pracownicy where etat='ASYSTENT'; 8. Wybierz poniższe dane o pracownikach zespołów 30 i 40 w kolejności malejących zarobków. select id_prac, nazwisko, etat, placa_pod, id_zesp from pracownicy where id_zesp in (30,40); 9. Wybierz dane o pracownikach których płace podstawowe mieszczą się w przedziale 300 do 800 zł. select nazwisko, id_zesp, placa_pod from pracownicy where placa_pod between 300 and 800; 10. Wyświetl poniższe informacje o pracownikach, których nazwisko kończy się na SKI select nazwisko, etat, id_zesp from pracownicy where nazwisko like '%SKI'; 11. Wyświetl poniższe informacje o tych pracownikach, którzy zarabiają powyżej 1000 złotych i posiadają szefa. select id_prac, id_szefa, nazwisko, placa_pod from pracownicy where id_szefa is not null and placa_pod>1000; 12. Wyświetl nazwiska i identyfikatory zespołów pracowników zatrudnionych w zespole nr 20, których nazwisko zaczyna się na ‘M’ lub kończy na ‘SKI’. 2 select nazwisko, id_zesp from pracownicy where id_zesp=20 and (nazwisko like 'M%' or nazwisko like '%SKI'); 13. Wyświetl nazwiska, etaty i stawki godzinowe tych pracowników, którzy nie są ani adiunktami ani asystentami ani stażystami i którzy nie zarabiają w przedziale od 400 do 800 złotych. Wyniki uszereguj według stawek godzinowych pracowników (przyjmij 20-dniowy miesiąc pracy i 8-godzinny dzień pracy). select nazwisko, etat, placa_pod/160 from pracownicy where etat not in('ADIUNKT', 'STAZYSTA', 'ASYSTENT') and placa_pod not between 400 and 800 order by placa_pod; 14. Wyświetl poniższe informacje o pracownikach, dla których suma płacy podstawowej i dodatkowej jest wyższa niż 1000 złotych. Wyniki uporządkuj według nazw etatów. Jeżeli dwóch pracowników ma ten sam etat, to posortuj ich według nazwisk. select nazwisko, placa_pod, placa_dod, etat from pracownicy where placa_pod+NVL(placa_dod,0)>1000 order by etat, nazwisko; 15. Wyświetl poniższe informacje o profesorach, wyniki uporządkuj według malejących płac. select nazwisko || ' pracuje od ' || zatrudniony || ' i zarabia ' || placa_pod from pracownicy where etat='PROFESOR'; Funkcje znakowe i liczbowe, konwersja, funkcje działające na datach i funkcje polimorficzne- zadania 1. Dla każdego pracownika wygeneruj kod składający się z dwóch pierwszych liter jego etatu i jego numeru identyfikacyjnego. select nazwisko, substr(etat,1,2)||id_zesp from pracownicy; 2. Wydaj wojnę literom „K”, „L”, „M” zamieniając je wszystkie na literę „X” w nazwiskach pracowników select nazwisko, translate(nazwisko,'KLM','XXX') as wojna_literom from pracownicy; 3. Wyświetl nazwiska pracowników którzy posiadają literę „L” w pierwszej połowie swojego nazwiska. select nazwisko from pracownicy where substr(nazwisko,1,trunc(length(nazwisko)/2))like '%L%'; 3 4. Wyświetl nazwiska i płace pracowników powiększone o 15% i zaokrąglone do liczb całkowitych select nazwisko, round(placa_pod*1.15) from pracownicy; 5. Każdy pracownik odłożył 20% swoich miesięcznych zarobków na 10-letnią lokatę oprocentowaną 10% w skali roku i kapitalizowaną co roku. Wyświetl informację o tym, jaki zysk będzie miał każdy pracownik po zamknięciu lokaty. select nazwisko, placa_pod, 0.2*placa_pod as inwestycja, 0.2*placa_pod*power(1.1,10) as kapital, 0.2*placa_pod*power(1.1,10)-0.2*placa_pod as zysk from pracownicy; Policz, ile lat pracuje każdy pracownik 6. select nazwisko, extract (year from sysdate)-extract (year from zatrudniony) as pracuje from pracownicy; Wyświetl poniższe informacje o datach przyjęcia pracowników zespołu 20 7. select nazwisko, to_char(zatrudniony, 'month,DD,YYYY') as data_zatrudnienia from pracownicy where id_zesp=20; Sprawdź, jaki mamy dziś dzień tygodnia 8. select to_char(sysdate, 'day') from dual; 9. Przyjmij, że Mielżyńskiego i Strzelecka należą do dzielnicy Stare Miasto, Piotrowo należy do dzielnicy Nowe Miasto a Włodkowica należy do dzielnicy Grunwald. Wyświetl poniższy raport (skorzystaj z wyrażenia CASE) select nazwa, adres, case when adres like 'PIOTROWO%' then 'Nowe Miasto' when adres like 'STRZELECKA%' or adres like 'MIELZYNSKIEGO%' then 'Stare Miasto' when adres like 'WLODKOWICA%' then 'GRUDNWALD' END as dzielnica from zespoly; 10. Dla każdego pracownika wyświetl informację o tym, czy jego pensja jest mniejsza niż, równa lub większa niż 480 złotych select nazwisko, placa_pod, case 4 when placa_pod<480 then 'ponizje 480' when placa_pod=480 then 'rowno 480' else 'powyzej 480' END as placa from pracownicy; 11. (dla chętnych) Napisz to samo zapytanie przy pomocy funkcji DECODE Podział na grupy, klauzula GROUP BY - zadania 12. Wyświetl najniższą i najwyższą pensję w firmie. Wyświetl informację o różnicy dzielącej najlepiej i najgorzej zarabiających pracowników. select max(placa_pod) as maks, min(placa_pod) as min, max(placa_pod)-min(placa_pod) as roznica from pracownicy; 13. Wyświetl średnie pensje dla wszystkich etatów. Wyniki uporządkuj wg. malejącej średniej pensji. select avg(placa_pod), etat from pracownicy group by etat order by avg(placa_pod) desc; 14. Wyświetl liczbę profesorów zatrudnionych w Instytucie select count(nazwisko) as profesorowie from pracownicy where etat='PROFESOR'; 15. Znajdź sumaryczne miesięczne płace dla każdego zespołu. Nie zapomnij o płacach dodatkowych. select id_zesp, sum(placa_pod+NVL(placa_dod,0)) as placa from pracownicy group by id_zesp; 16. Dla każdego pracownika wyświetl pensję najgorzej zarabiającego podwładnego. Wyniki uporządkuj wg. malejącej pensji. select id_szefa, min(placa_pod) from pracownicy group by id_szefa; 17. Wyświetl numery zespołów, które zatrudniają więcej niż 3 pracowników. Wyniki uporządkuj wg. malejącej liczby pracowników. select id_zesp, count(nazwisko) from pracownicy group by id_zesp having count(nazwisko)>3; 18. Wyświetl średnie pensje wypłacane w ramach poszczególnych etatów i liczbę zatrudnionych na danym etacie. Pomiń pracowników zatrudnionych po 1990 roku. select etat, avg(placa_pod) as srednia, count(nazwisko) as liczba from pracownicy where zatrudniony<to_date('01-01-1990', 'mm, dd,yyyy') group by etat; Połączenia – zadania 5 1. Wyświetl nazwiska, etaty, numery zespołów i nazwy zespołów wszystkich pracowników. select p.nazwisko, p.etat, p.id_zesp, z.nazwa from pracownicy p, zespoly z where p.id_zesp=z.id_zesp; 2. Wyświetl wszystkich pracowników z ul. Piotrowo 3a. Uporządkuj wyniki według nazwisk pracowników. select p.nazwisko, p.etat, p.id_zesp, z.adres from pracownicy p, zespoly z where p.id_zesp=z.id_zesp and adres like 'PIOTROWO%'; 3. Wyświetl nazwiska, miejsca pracy oraz nazwy zespołów tych pracowników, których miesięczna pensja przekracza 400. select p.nazwisko, z.nazwa, z.adres from pracownicy p, zespoly z where p.id_zesp=z.id_zesp and placa_pod>400; 4. Dla każdego pracownika wyświetl jego kategorię płacową i widełki płacowe w jakich mieści się pensja pracownika. select nazwisko, placa_pod, etat, nazwa, placa_min, placa_max from pracownicy, etaty where etat=nazwa; 5. Wyświetl nazwiska i etaty pracowników, których rzeczywiste zarobki odpowiadają widełkom płacowym przewidzianym dla sekretarek. select nazwisko, placa_pod, etat, nazwa, placa_min, placa_max from pracownicy, etaty where nazwa='SEKRETARKA' and placa_pod between placa_min and placa_max; 6. Wyświetl nazwiska, etaty, wynagrodzenia, kategorie płacowe i nazwy zespołów pracowników nie będących asystentami. Wyniki uszereguj zgodnie z malejącym wynagrodzeniem. select nazwisko, etat, placa_pod, e.nazwa, z.nazwa from pracownicy p, etaty e, zespoly z where etat=e.nazwa and p.id_zesp=z.id_zesp and etat!='ASYSTENT'; 7. Wyświetl poniższe informacje o tych pracownikach, którzy są asystentami lub adiunktami i których roczne dochody przekraczają 5500. Roczne dochody to dwunastokrotność płacy podstawowej powiększona o ewentualną płacę dodatkową. Ostatni atrybut to nazwa kategorii płacowej pracownika. 6 select nazwisko, etat, placa_pod*12+NVL(placa_dod,0) as roczna_placa, e.nazwa, z.nazwa from pracownicy p, etaty e, zespoly z where etat=e.nazwa and p.id_zesp=z.id_zesp and e.nazwa in ('ASYSTENT', 'ADIUNKT') and placa_pod*12+NVL(placa_dod,0)>5500; 8. Wyświetl nazwiska i numery pracowników wraz z numerami i nazwiskami ich szefów. select p1.nazwisko, p1.id_prac, p2.id_prac as id_szefa, p2.nazwisko as nazwisko_szefa from pracownicy p1, pracownicy p2 where p1.id_szefa=p2.id_prac; 9. Zmodyfikuj powyższe zlecenie w ten sposób, aby było możliwe wyświetlenie pracownika WEGLARZ (który nie ma szefa). select p1.nazwisko, p1.id_prac, p2.id_prac as id_szefa, p2.nazwisko as nazwisko_szefa from pracownicy p1, pracownicy p2 where p1.id_szefa=p2.id_prac(+); 10. Dla każdego zespołu wyświetl liczbę zatrudnionych w nim pracowników i ich średnią płacę. select z.nazwa, count(nazwisko), avg(placa_pod) from zespoly z, pracownicy p where z.id_zesp=p.id_zesp group by z.nazwa; 11. Dla każdego pracownika posiadającego podwładnych wyświetl ich liczbę. Wyniki posortuj zgodnie z malejącą liczbą podwładnych. select p1.nazwisko, count(p2.nazwisko) from pracownicy p1, pracownicy p2 where p2.id_szefa=p1.id_prac group by p1.nazwisko order by count(p2.nazwisko) desc; 12. Wyświetl nazwiska i daty zatrudnienia pracowników, którzy zostali zatrudnieni nie później niż 10 lat (3650 dni) po swoich przełożonych. select p1.nazwisko, p1.zatrudniony, p2.nazwisko as szef, p2.zatrudniony as szef_zatrudniony from pracownicy p1, pracownicy p2 where p1.id_szefa=p2.id_prac and extract(year from p1.zatrudniony)-extract(year from p2.zatrudniony)<10; Podzapytania – zadania 1. Wyświetl nazwiska i etaty pracowników pracujących w tym samym zespole co pracownik o nazwisku Brzeziński. select nazwisko, etat, id_zesp from pracownicy where id_zesp=(select id_zesp from pracownicy where nazwisko='BRZEZINSKI'); 2. Wyświetl poniższe dane o najdłużej zatrudnionym profesorze. select nazwisko, etat, zatrudniony from pracownicy where zatrudniony=(select min(zatrudniony) from pracownicy); 3. Wyświetl najkrócej pracujących pracowników każdego zespołu. Uszereguj wyniki zgodnie z 7 kolejnością zatrudnienia. select nazwisko, zatrudniony, id_zesp from pracownicy where (zatrudniony, id_zesp) in (select min(zatrudniony), id_zesp from pracownicy group by id_zesp)order by zatrudniony; 4. Wyświetl zespoły, które nie zatrudniają pracowników. select z.id_zesp, z.nazwa, z.adres from zespoly z, pracownicy p where z.id_zesp=p.id_zesp(+) and (select count(p.nazwisko) from pracownicy)=0; 5. Wyświetl poniższe informacje o pracownikach zarabiających więcej niż średnia pensja dla ich etatu. select p.nazwisko, p.placa_pod, p.etat from pracownicy p where placa_pod>(select avg(placa_pod) from pracownicy where etat=p.etat); select z.id_zesp, z.nazwa, z.adres from zespoly z where id_zesp not in (select distinct id_zesp from pracownicy); 6. Wyświetl nazwiska i pensje pracowników którzy zarabiają co najmniej 75% pensji swojego szefa. select p.nazwisko, p.placa_pod from pracownicy p where placa_pod>0.75*(select placa_pod from pracownicy where id_prac=p.id_szefa); 7. Wyświetl nazwiska tych profesorów, którzy wśród swoich podwładnych nie mają żadnych stażystów. select p.nazwisko from pracownicy p where etat='PROFESOR' AND p.id_prac <> all (select id_szefa from pracownicy where etat='STAZYSTA'); 8. Stosując podzapytanie skorelowane wyświetl informacje o zespole nie zatrudniającym żadnych pracowników. select z.id_zesp, z.nazwa, z.adres from zespoly z, pracownicy p where z.id_zesp=p.id_zesp(+) and (select count(p.nazwisko) from pracownicy)=0; select z.id_zesp, z.nazwa, z.adres from zespoly z where not exists (select nazwisko from pracownicy where id_zesp=z.id_zesp); 9. Wyświetl numer zespołu wypłacającego miesięcznie swoim pracownikom najwięcej pieniędzy. select id_zesp, sum(placa_pod) from pracownicy group by id_zesp having sum(placa_pod)=(select max(sum(placa_pod)) from pracownicy group by id_zesp); 10. Wyświetl nazwiska i pensje trzech najlepiej zarabiających pracowników. Zastosuj podzapytanie. select p.nazwisko from pracownicy p where (select count(*) from pracownicy where placa_pod>p.placa_pod)<3; 8 11. Wyświetl dla każdego roku liczbę zatrudnionych w nim pracowników. Wynik uporządkuj zgodnie z liczbą zatrudnionych. select distinct extract(year from p.zatrudniony), count(nazwisko) from pracownicy p group by extract(year from p.zatrudniony); 12. Zmodyfikuj powyższe zapytanie w ten sposób, aby wyświetlać tylko rok, w którym przyjęto najwięcej pracowników. select distinct extract(year from p.zatrudniony), count(nazwisko) from pracownicy p group by extract(year from p.zatrudniony) having (select max(count(nazwisko)) from pracownicy group by extract(year from zatrudniony))=count(nazwisko); 13. Wyświetl poniższe informacje o tych pracownikach, którzy zarabiają mniej niż średnia płaca dla ich etatu. select p.nazwisko, p.etat, p.placa_pod, z.nazwa from pracownicy p, zespoly z where p.id_zesp=z.id_zesp and placa_pod<(select avg(placa_pod) from pracownicy where etat=p.etat); 14. Zmodyfikuj powyższe zapytanie w ten sposób, aby zamiast nazwy zespołu wyświetlać średnią płacę dla danego etatu. NAZWISKO ETAT PLACA_POD AVG(X.PLACA_POD) --------------- ---------- --------- ---------------KOSZLAJDA ADIUNKT JEZIERSKI ASYSTENT 590 439,7 617,75 442,675 MATYSIAK ASYSTENT 371 442,675 BRZEZINSKI PROFESOR 960 1052,5 MORZY PROFESOR ZAKRZEWICZ STAZYSTA 830 1052,5 208 229 15. Wyświetl nazwiska profesorów i liczbę ich podwładnych. Wyświetl tylko profesorów zatrudnionych na Piotrowie. NAZWISKO PODWLADNI --------------- --------BRZEZINSKI MORZY 5 2 16. Dla każdego profesora wyświetl jego nazwisko, średnią płacą w jego zespole i największą płacę w Instytucie. Zastosuj podzapytanie w klauzuli SELECT. 9 NAZWISKO SREDNIA MAKSYMALNA --------------- ---------- ---------BLAZEWICZ 1350 SLOWINSKI 502 BRZEZINSKI 616,6 MORZY 616,6 1730 1730 1730 1730 17. Dla każdego pracownika wyświetl jego nazwisko oraz nazwę zespołu w którym pracuje dany pracownik. Posłuż się podzapytaniem w klauzuli SELECT. NAZWISKO ZESPOL ------------------------------ -------------------WEGLARZ ADMINISTRACJA BLAZEWICZ ALGORYTMY SLOWINSKI SYSTEMY EKSPERCKIE BRZEZINSKI SYSTEMY ROZPROSZONE MORZY SYSTEMY ROZPROSZONE KROLIKOWSKI SYSTEMY ROZPROSZONE KOSZLAJDA SYSTEMY ROZPROSZONE JEZIERSKI SYSTEMY ROZPROSZONE MATYSIAK SYSTEMY ROZPROSZONE MAREK ADMINISTRACJA ZAKRZEWICZ BIALY SYSTEMY EKSPERCKIE SYSTEMY EKSPERCKIE KONOPKA HAPKE SYSTEMY ROZPROSZONE SYSTEMY EKSPERCKIE 18. Wyświetl informacje o asystentach pracujących na Piotrowie. Klauzula FROM powinno wyglądać następująco: FROM ASYSTENCI NATURAL JOIN PIOTROWO. Zastosuj klauzulę WITH. NAZWISKO ETAT NAZWA ADRES --------------- ---------- -------------------- -----------JEZIERSKI ASYSTENT SYSTEMY ROZPROSZONE PIOTROWO 3A MATYSIAK ASYSTENT SYSTEMY ROZPROSZONE PIOTROWO 3A KONOPKA ASYSTENT SYSTEMY ROZPROSZONE PIOTROWO 3A 10 19. Wyświetl poniższe informacje o wszystkich (pośrednich i bezpośrednich) podwładnych Brzezińskiego. NAZWISKO ID_PRAC ID_SZEFA LEVEL --------------- ---------- ---------- ---------BRZEZINSKI 130 MORZY 140 MATYSIAK KROLIKOWSKI 1. 210 3 130 160 170 3 140 150 JEZIERSKI 2. 2 140 200 KOSZLAJDA 1 130 190 ZAKRZEWICZ BIALY 100 2 130 2 130 130 2 2 Język definiowania danych DDL - zadania Utwórz poniższe relacje. Nazwa relacji: PROJEKTY Własność Nazwa 1. Typ 2. Roz miar ID_PROJEKTU Liczba 4 Klucz podstawowy OPIS_PROJEKTU Łańcuch znaków 20 Wymagany, unikalny DATA_ROZPOCZECIA Data Domyślnie data systemowa Późniejsza niż DATA_ROZPOCZECIA DATA_ZAKONCZENIA Data FUNDUSZ Liczba (2 miej.dz) 7 Większy lub równy 0 create table projekty ( id_projektu number(4) constraint id_projektu_klucz primary key, opis_projektu varchar(20) constraint opis_projektu unique not null, 11 data_rozpoczecia date default sysdate, data_zakonczenia date, fundusz number(7,2) constraint fundusz check (fundusz>=0), constraint daty check (data_zakonczenia>data_rozpoczecia)); Nazwa relacji: PRZYDZIALY Nazwa Typ Własność Rozmiar ID_PROJEKTU Liczba 4 Niepusty klucz obcy (PROJEKTY) NR_PRACOWNIKA Liczba 4 Niepusty klucz obcy (PRACOWNICY) OD Data Domyślnie data systemowa DO Data Późniejsza niż OD STAWKA Liczba (2 miej.dz) 7 Większa od 0 ROLA Łańcuch znaków 20 Jedynie wartości ‘KIERUJĄCY’ ‘ANALITYK’ ‘PROGRAMISTA’ Kluczem podstawowym relacji PRZYDZIALY jest para atrybutów (ID_PROJEKTU, NR_PRACOWNIKA) create table przydzialy ( id_projektu number(4) constraint blad_id_projektu not null references projekty(id_projektu), nr_pracownika number(4) constraint blad_nr_pracownika not null references pracownicy(id_prac), od date default sysdate, do date, stawka number(7,2) constraint blad_stawka check(stawka>0), rola varchar(20) constraint blad_rola check(rola in('KIERUJACY', 'ANALITYK', 'PROGRAMISTA')), constraint blad_daty check(do>od), constraint pk primary key (id_projektu,nr_pracownika) ); 2. Dodaj do relacji PRZYDZIALY atrybut GODZINY typu liczbowego. alter table przydzialy add (godziny number(4)); 3. Dodaj do utworzonych przez siebie relacji komentarze i wyświetl te komentarze. 12 TABLE_NAME TABLE_TYPE COMMENTS ---------- ---------- -----------------------------------------------PROJEKTY TABLE PRZYDZIALY TABLE Lista projektów prowadzonych przez pracowników Informacje o przydziale poszczególnych pracowników do projektóW 4. Wyświetl informacje o ograniczeniach założonych na relacji PRZYDZIALY CONSTRAINT_NAME C SEARCH_CONDITION --------------- - ---------------------------------------------SYS_C006587 C "ID_PROJEKTU" IS NOT NULL SYS_C006588 C "NR_PRACOWNIKA" IS NOT NULL SYS_C006589 C STAWKA >= 0 ROLA_CHK C ROLA IN ('KIERUJACY','ANALITYK','PROGRAMISTA') SYS_C006591 C DO > OD SYS_C006592 P SYS_C006593 R SYS_C006594 R 5. Wyłącz tymczasowo sprawdzanie unikalności opisów projektów. 6. Zwiększ maksymalny rozmiar atrybutu OPIS_PROJEKTU do 30 znaków. 7. Utwórz relację PRACOWNICY_ZESPOŁY zawierającą następujące dane. Posłuż się mechanizmem tworzenia relacji w oparciu o zapytanie. NAZWISKO POSADA ROCZNA_PLACA ZESPOL ADRES_PRACY create table pracownicy_zespoly as (select p.nazwisko, p.etat as posada, 12*p.placa_pod+nvl(p.placa_dod,0) as roczna_placa, z.nazwa, z.adres from pracownicy p, zespoly z where p.id_zesp=z.id_zesp); 3. 1. Język manipulowania danymi DML - zadania Wstaw do relacji PROJEKTY następujące krotki atrybut wartość wartość 13 ID_PROJEKTU 1 2 OPIS_PROJEKTU Indeksy bitmapowe Sieci kręgosłupowe DATA_ROZPOCZECIA 02-04-1999 12-11-2000 DATA_ZAKONCZENIA 31-08-2001 FUNDUSZ 25000 19000 insert into projekty(id_projektu, opis_projektu, data_rozpoczecia, data_zakonczenia, fundusz) values (1, 'Indeksy bitmapowe', to_date('02-04-1999', 'dd-mm-yyyy'), to_date('31-08-2001', 'ddmm-yyyy'), 25000); insert into projekty(id_projektu, opis_projektu, data_rozpoczecia, fundusz) values (2, 'Sieci kregoslupowe', to_date('12-11-2000', 'dd-mm-yyyy'), 19000); 2. Wstaw do relacji PRZYDZIALY następujące krotki wartość atrybut ID_PROJEKTU 1 wartość 1 NR_PRACOWNIKA 170 140 OD 10-04-1999 01-12-2000 DO 10-05-1999 STAWKA 1000 1500 ROLA KIERUJĄCY ANALITYK GODZINY 20 40 insert into przydzialy(id_projektu, nr_pracownika, od, do, stawka, rola, godziny) values (1, 170, to_date('10-04-1999', 'dd-mm-yyyy'), to_date('10-05-1999', 'dd-mm-yyyy'), 1000, 'KIERUJACY', 20); insert into przydzialy(id_projektu, nr_pracownika, od, stawka, rola, godziny) values (2, 140, to_date('01-12-2000', 'dd-mm-yyyy'), 1500, 'ANALITYK', 40); 3. Podnieś stawkę pracownika o numerze 170 do 1200 złotych (relacja PRZYDZIALY) update przydzialy set stawka=1200 where nr_pracownika=170; 4. Zmień datę zakończenia projektu ‘Indeksy bitmapowe’ na 31 grudnia 2001 i zmniejsz fundusz 14 tego projektu do 19000 złotych. update projekty set fundusz=19000, data_zakonczenia=to_date('31.12.2001', 'dd.mm.yyyy') where opis_projektu like'Indeksy%'; 5. Wstaw dwie propozycje własnych projektów. insert into projekty(id_projektu, opis_projektu, data_rozpoczecia, data_zakonczenia, fundusz) values (3, 'projekt X', to_date('02-04-2005', 'dd-mm-yyyy'), to_date('31-10-2005', 'dd-mm-yyyy'), 25000); insert into projekty(id_projektu, opis_projektu, data_rozpoczecia, data_zakonczenia, fundusz) values (4, 'projekt GABKA', to_date('18-04-2006', 'dd-mm-yyyy'), to_date('16-10-2007', 'dd-mm-yyyy'), 89000); 6. Usuń informacje o projektach do których nie przydzielono żadnych pracowników. delete projekty p where (select count(*) from przydzialy where id_projektu=p.id_projektu)=0; 7. Wszystkim pracownikom podnieś pensję o 10% średniej płacy w ich zespole. 8. Podnieś do średniej pracowniczej pensję najgorzej zarabiającym pracownikom. 9. Uaktualnij płace dodatkowe pracowników zespołu 20. Nowe płace dodatkowe mają być równe średniej płacy pracowników, których przełożonym jest prof. Morzy. 10. Pracownikom zespołu o nazwie ‘SYSTEMY ROZPROSZONE’ daj 25% podwyżkę. Zastosuj modyfikację połączenia. 11. Usuń podwładnych pracownika o nazwisku Morzy. Zastosuj usuwanie krotek z wyniku połączenia relacji. 4. Sekwencje - zadania 12. Utwórz sekwencję MYSEQ rozpoczynającą się od 300 i zwiększającą się w każdym kroku o 10. 13. Wykorzystaj utworzoną sekwencję do wstawienia nowego stażysty o nazwisku Trąbczyński do relacji Pracownicy. 14. Zmodyfikuj pracownikowi Trąbczyńskiemu płacę dodatkową na wartość wskazywaną przez sekwencję. 15. Stwórz nową sekwencję o niskiej wartości maksymalnej. Zaobserwuj, co się dzieje, gdy następuje „przepełnienie” sekwencji. 15