background image

POLITECHNIKA OPOLSKA 

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI 

 

 

BAZY DANYCH I 

LABORATORIUM 

 

 

Kierunek 
studiów: 

Informatyka 

Rok studiów: 

III 

Numer grupy: 

L4 

Rok akademicki:  2012/2013 

Semestr: 

 

Temat: 

Ćwiczenie 2 

 

Lp. 

Nr indeksu 

Imię i nazwisko 

1. 

78202 

Kurasz Arkadiusz 

 

Termin zajęć: 

Prowadzący: 

dzień: 

Wtorek 

mgr inż. Alina Stefanowska-Kędzia 

godzina: 

10:05 

 

background image

POLITECHNIKA OPOLSKA 

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI 

strona 1 

Zad. 1. Zdefiniować  tablicę  PRAC_KOPIA  posiadająca  taki  sam  schemat  jak  tablica  PRAC i zawierającą 

tylko te wiersze z tablicy PRAC, których wartość atrybutu etat jest równa ‘STAZYSTA’. 

 
Zapytanie: 

create table prac_kopia as select * from prac 
where etat = 'STAZYSTA'; 

 
Wynik zapytania: 

table PRAC_KOPIA created. 
 

 
Zad. 2. Wyświetlić wszystkie etaty, na których są zatrudnieni pracownicy. 

 

Sposób nr 1 – z użyciem GROUP BY 

 

Zapytanie: 

 

select etat from prac group by etat; 

 

 
Wynik zapytania: 

ETAT      
---------- 
ADIUNKT     
PROFESOR    
DYREKTOR    
STAZYSTA    
ASYSTENT    
SEKRETARKA 
 
 6 rows selected 

 
 
Zad. 3. Wyświetlić pracowników zatrudnionych od 1980 do 1985 roku. 
 
Zapytanie: 

select * from prac 
where zatrudniony between '01-JAN-80' and '12-DEC-85'; 

 
Wynik zapytania: 

ID_PRAC NAZWISKO        ETAT       SZEF ZATRUDNIONY PLACA_POD PLACA_DOD ID_ZESP 
------- --------------- ---------- ---- ----------- --------- --------- ------- 
    160 GABACKI         ADIUNKT     130 01-MAR-85        1590                20 
    180 JOTBACKA        SEKRETARKA  100 20-FEB-85      1410.2                10 
 
 
 
 

background image

POLITECHNIKA OPOLSKA 

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI 

strona 2 

Zad. 4. Wyświetlić średnią płacę na każdym z etatów. 
 
Zapytanie: 

select etat, avg(placa_pod) "ŚREDNIA PŁACA" from prac group by etat; 

 
Wynik zapytania: 

ETAT       SREDNIA PLACA 
---------- ------------- 
ADIUNKT          1617.75 
PROFESOR          3052.5 
DYREKTOR            2730 
STAZYSTA            1229 
ASYSTENT        1442.675 
SEKRETARKA        1410.2 
 
 6 rows selected 
 
 

Zad. 5. Znaleźć  etat,  na  którym  zatrudniono  pracownika  w  pierwszej  połowie  1984  roku  lub  w 

pierwszej połowie 1985. 

 
Zapytanie: 

select * from prac 
where 
 

zatrudniony between '01-JAN-84' and '30-JUN-84' 

 

or zatrudniony between '01-JAN-85' and '30-JUN-85'; 

 
Wynik zapytania: 

ID_PRAC NAZWISKO        ETAT       SZEF ZATRUDNIONY PLACA_POD PLACA_DOD ID_ZESP 
------- --------------- ---------- ---- ----------- --------- --------- ------- 
    160 GABACKI         ADIUNKT     130 01-MAR-85        1590                20 
    180 JOTBACKA        SEKRETARKA  100 20-FEB-85      1410.2                10 
 
 

Zad. 6. Wyświetlić  nazwisko,  etat,  płacę  podstawową  pracowników  zespołu  10  i  20  zgodnie  z 

alfabetycznym porządkiem nazwisk. 

 
Zapytanie: 

select nazwisko, etat, placa_pod from prac 
where id_zesp in(10, 20) order by nazwisko; 

 
 
 
 
Wynik zapytania: 

NAZWISKO        ETAT       PLACA_POD 
--------------- ---------- --------- 
ABACKI          DYREKTOR        2730 

background image

POLITECHNIKA OPOLSKA 

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI 

strona 3 

DABACKI         PROFESOR        2960 
EBACKI          PROFESOR        2830 
FABACKI         ADIUNKT       1645.5 
GABACKI         ADIUNKT         1590 
HABACKI         ASYSTENT      1439.7 
IBACKI          ASYSTENT        1371 
JOTBACKA        SEKRETARKA    1410.2 
MABACKI         ASYSTENT        1480 
 
 9 rows selected 
 
 

Zad. 7. Wyświetlić sumaryczną płacę wszystkich asystentów 
 
Zapytanie: 

select sum(placa_pod) "SUMARYCZNA PŁACA ASYSTENTÓW" from prac 
where etat = 'ASYSTENT'; 

 
Wynik zapytania: 

SUMARYCZNA PLACA ASYSTENTÓW 
--------------------------- 
                     5770.7 
 
 

Zad. 8. Wyświetlić pracowników, których nazwiska rozpoczynają się od litery M lub P. 
 
Zapytanie: 

select * from prac 
where nazwisko like 'M%' or nazwisko like 'P%'; 

 
Wynik zapytania: 

ID_PRAC NAZWISKO        ETAT       SZEF ZATRUDNIONY PLACA_POD PLACA_DOD ID_ZESP 
------- --------------- ---------- ---- ----------- --------- --------- ------- 
    220 MABACKI         ASYSTENT    110 01-OCT-93        1480                20 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

background image

POLITECHNIKA OPOLSKA 

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI 

strona 4 

Zad. 9. Wyświetlić posortowane nazwiska pracowników zarabiających od 2000 do 3000 
 
Zapytanie: 

select nazwisko, placa_pod from prac 
where placa_pod between 2000 and 3000 order by nazwisko; 

 
Wynik zapytania: 

NAZWISKO        PLACA_POD 
--------------- --------- 
ABACKI               2730 
DABACKI              2960 
EBACKI               2830 
 
 

Zad. 10.Wyświetlić nazwiska pracowników, nazwy i adresy zespołów pracowników, których miesięczna 

pensja przekracza 2000 PLN. 

 
Zapytanie: 

select p.nazwisko, z.nazwa "NAZWA ZESPOŁU", z.adres "ADRES ZESPOŁU" 
from prac p, zesp z 
where p.id_zesp = z.id_zesp and p.placa_pod > 2000; 

 
Wynik zapytania: 

NAZWISKO        NAZWA ZESPOLU        ADRES ZESPOLU       
--------------- -------------------- -------------------- 
ABACKI          ADMINISTRACJA        MIKOLAJCZYKA 5        
BABACKI         AUTOMATYKA           SOSNKOWSKIEGO 31      
CABACKI         BUDOWNICTWO          KATOWICKA 14          
DABACKI         INFORMATYKA          SOSNKOWSKIEGO 31      
EBACKI          INFORMATYKA          SOSNKOWSKIEGO 31   
 

background image

POLITECHNIKA OPOLSKA 

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI 

strona 5 

 

Zad.  11.  Wyświetlić  pracowników  z  ulicy  Sosnkowskiego  w  rosnącym  porządku  alfabetycznym  ich 
nazwisk. 
 
Zapytanie: 

select * from prac p, zesp z 
where 
p.id_zesp = z.id_zesp and z.adres like 'SOSNKOWSKIEGO%' order by nazwisko asc; 

 
Wynik zapytania: 

ID_PRAC NAZWISKO        ETAT       SZEF ZATRUDNIONY PLACA_POD PLACA_DOD ID_ZESP ID_ZESP NAZWA                ADRES               
------- --------------- ---------- ---- ----------- --------- --------- ------- ------- -------------------- -------------------- 
    110 BABACKI         PROFESOR    100 01-MAY-73        3350       210      40      40 AUTOMATYKA           SOSNKOWSKIEGO 31      
    130 DABACKI         PROFESOR    100 01-JUL-68        2960                20      20 INFORMATYKA          SOSNKOWSKIEGO 31      
    140 EBACKI          PROFESOR    130 15-SEP-75        2830       105      20      20 INFORMATYKA          SOSNKOWSKIEGO 31      
    150 FABACKI         ADIUNKT     130 01-SEP-77      1645.5                20      20 INFORMATYKA          SOSNKOWSKIEGO 31      
    160 GABACKI         ADIUNKT     130 01-MAR-85        1590                20      20 INFORMATYKA          SOSNKOWSKIEGO 31      
    170 HABACKI         ASYSTENT    130 01-OCT-92      1439.7      80.5      20      20 INFORMATYKA          SOSNKOWSKIEGO 31      
    190 IBACKI          ASYSTENT    140 01-SEP-93        1371                20      20 INFORMATYKA          SOSNKOWSKIEGO 31      
    220 MABACKI         ASYSTENT    110 01-OCT-93        1480                20      20 INFORMATYKA          SOSNKOWSKIEGO 31      
 
 8 rows selected 

 
 

Zad. 12. Wyświetlić zespoły, które nie zatrudniają pracowników. 
 

Z użyciem klauzuli MINUS 

Zapytanie: 

select nazwa "ZESPÓŁ BEZ PRACOWNIKÓW" from zesp 
minus 
select z.nazwa from prac p, zesp z where p.id_zesp = z.id_zesp; 

Z użyciem NOT EXISTS 

Zapytanie: 

select nazwa "ZESPÓŁ BEZ PRACOWNIKÓW" from zesp z 
where not exists 
(select * from prac p where p.id_zesp = z.ID_ZESP); 

Z użyciem NOT IN 

Zapytanie: 

select nazwa "ZESPÓŁ BEZ PRACOWNIKÓW" from zesp 
where id_zesp not in (select id_zesp from prac); 

 

 

Wynik dla każdego z zapytań jest taki sam: 

ZESPÓL BEZ PRACOWNIKÓW 
---------------------- 
ELEKTROTECHNIKA         

 
 
 
 
 
 

background image

POLITECHNIKA OPOLSKA 

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI 

strona 6 

Zad. 13. Wyświetlić minimalne i maksymalne wynagrodzenie pracowników w poszczególnych grupach 
etatowych 
 
Zapytanie: 

select  etat, 
        min(placa_pod) "MINIMALNA PŁACA PODSTAWOWA", 
        max(placa_pod) "MAKSYMALNA PŁACA PODSTAWOWA" 
from prac group by etat; 

 
Wynik zapytania: 

ETAT       MINIMALNA PLACA PODSTAWOWA MAKSYMALNA PLACA PODSTAWOWA 
---------- -------------------------- --------------------------- 
ADIUNKT                          1590                      1645.5 
PROFESOR                         2830                        3350 
DYREKTOR                         2730                        2730 
STAZYSTA                         1208                        1250 
ASYSTENT                         1371                        1480 
SEKRETARKA                     1410.2                      1410.2 
 
 6 rows selected 
 
 

Zad. 14. Wyświetlić  liczbę profesorów wśród pracowników. 
 
Zapytanie: 

select count(*) "LICZBA PROFESORÓW" from prac where etat = 'PROFESOR'; 

 
Wynik zapytania: 

LICZBA PROFESORÓW 
----------------- 
                4