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:
V
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
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
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
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
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
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
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