Ćwiczenie 2
I. Polecenie SELECT
Polecenie SELECT składa się zawsze ze słów kluczowych SELECT oraz FROM. Ponadto może zawierać klauzule:
1. WHERE - warunek wyboru wierszy
W klauzuli WHERE mogą wystąpić:
a) operatory relacji: =, < > , >, >=, <, <=,
np. SELECT * FROM ZESP WHERE ID_ZESP<40;
b) operatory specjalne:
LIKE - określenie wartości dla warunku
IN - wskazanie zbioru wartości dla warunku
BETWEEN ... AND - wskazanie zakresu wartości dla warunku
IS NULL
Uwaga: powyższe operatory mogą być negowane operatorem NOT np. IS NOT NULL
np. SELECT * FROM ZESP WHERE ADRES LIKE '_OS%';
Uwaga: znak % zastępuje sekwencję znaków, a podkreślenie "_" pojedynczy znak.
SELECT * FROM ETAT WHERE PLACA_MIN IN (1000, 2000, 3000);
SELECT NAZWISKO FROM PRAC
WHERE PLACA_POD BETWEEN 2000 AND 3000;
SELECT * FROM PRAC WHERE PLACA_DOD IS NULL;
c) operatory logiczne: AND, OR, NOT
np. SELECT * FROM PRAC
WHERE PLACA_POD>1500
AND (ETAT='ASYSTENT' OR ETAT ='SEKRETARKA');
2. DISTINCT - wyszukanie wierszy nie powtarzających się
np. SELECT DISTINCT ADRES FROM ZESP;
3. ORDER BY - porządkowanie alfabetyczne (domyślnie rosnąco)
np. SELECT * FROM PRAC ORDER BY NAZWISKO desc;
Uwaga: - asc oznacza porządek rosnący , desc - porządek malejący;
- klauzula ORDER BY wystąpić może tylko jako ostatnia;
- można wskazywać więcej niż jedną kolumnę w klauzuli ORDER BY, wskazaniem kolumny może być jej nazwa lub jej numer kolejny.
4. GROUP BY - grupuje wiersze o tej samej wartości wyszczególnionych kolumn. Po podziale, do każdej grupy można stosować tzw. funkcje grupowe np. count(*) - zliczającą ilości wystąpień, sum(a) - obliczenie sumy wartości kolumny a
np. SELECT ID_ZESP, count(*) FROM PRAC GROUP BY ID_ZESP;
Funkcje operujące na grupach krotek (funkcje kolumnowe):
avg([distinct|all]atr) |
średnia |
count([distinct|all]wyr) |
zliczanie ilości wystąpień |
max([distinct|all]wyr) |
|
min([distinct|all]wyr) |
|
stddev([distinct|all]atr) |
odchylenie standardowe |
sum([distinct|all]atr) |
|
variance([distinct|all]atr) |
wariancja |
5. HAVING - umożliwia wybór informacji, dotyczących utworzonych grup
np. SELECT ID_ZESP, sum (PLACA_POD) FROM PRAC
GROUP BY ID_ZESP HAVING count(*) >3;
II. Wybieranie danych z wielu tabel.
Wybieranie danych z wielu tabel nazywa się złączeniem(ang. join). W klauzuli SELECT wymienia się kolumny, które chcemy wyświetlić, w klauzuli FROM określa się nazwy złączanych tabel a w klauzuli WHERE warunki złączenia.
1. Stosowanie aliasów w zapytaniu.
Aliasy definiuje się w celu skrócenia nazw tabel.
np. SELECT P.NAZWISKO, Z.ADRES
FROM PRACOWNICY P, ZESP Z
WHERE P.ID_ZESP = Z.IDZESP;
2. Klauzule UNION, UNION ALL, INTERSECT, MINUS
Powyższe klazule łącza dwa lub więcej zapytania SELECT z tą samą liczbą kolumn będących tego samego typu w jedną tabelę wynikową, posortowaną i nie zawierającą duplikatów. UNION stosuje się dla unii (sumy bez powtórzeń), UNION ALL - dla sumy z powtórzeniami, INTERSECT dla przekroju (iloczynu) a MINUS dla różnicy.
np. SELECT ETAT FROM PRAC
WHERE ID_ZESP = 10
intersect
SELECT ETAT FROM PRAC
WHERE ID_ZESP = 30;
Zadania do samodzielnego wykonania:
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'.
Zad. 2. Wyświetlić wszystkie etaty, na których są zatrudnieni pracownicy.
Zad. 3. Wyświetlić pracowników zatrudnionych od 1980 do 1985 roku.
Zad. 4. Wyświetlić średnią płacę na każdym z etatów.
Zad. 5. Znaleźć etat, na którym zatrudniono pracownika w pierwszej połowie 1984 roku lub w pierwszej połowie 1985.
Zad. 6. Wyświetlić nazwisko, etat, płacę podstawową pracowników zespołu 10 i 20 zgodnie z alfabetycznym porządkiem nazwisk.
Zad. 7. Wyświetlić sumaryczną płacę wszystkich asystentów
Zad. 8. Wyświetlić pracowników, których nazwiska rozpoczynają się od litery M lub P.
Zad. 9. Wyświetlić posortowane nazwiska pracowników zarabiających od 2000 do 3000
Zad. 10.Wyświetlić nazwiska pracowników, nazwy i adresy zespołów pracowników, których miesięczna pensja przekracza 2000 PLN.
Zad. 11. Wyświetlić pracowników z ulicy Sosnkowskiego w rosnącym porządku alfabetycznym ich nazwisk.
Zad. 12. Wyświetlić zespoły, które nie zatrudniają pracowników.
Zad. 13. Wyświetlić minimalne i maksymalne wynagrodzenie pracowników w poszczególnych grupach etatowych
Zad. 14. Wyświetlić liczbę profesorów wśród pracowników
LABORATORIUM z BAZ DANYCH
ORACLE
3