Notatki
Pokaz slajdów
Konspekt
1
Rozdział 3
Funkcje
  • Funkcje wierszowe (funkcje znakowe, funkcje liczbowe, funkcje operujące na datach, funkcje konwersji, funkcje polimorficzne), funkcje grupowe, podział relacji na grupy,
    klauzule GROUP BY i HAVING
2
Funkcje
  • Przekształcają dane, pobrane przez polecenie SQL, lub wyliczają nowe dane.
  • Podział ze względu na zakres działania:
    • funkcje wierszowe – operują na wartościach atrybutów jednego rekordu, funkcja zwraca tyle wyników ile rekordów przetwarza polecenie SQL,
    • funkcje grupowe (agregujące) – operują na wartościach wielu rekordów (grupy rekordów),  funkcja zwraca jeden wynik dla każdej grupy rekordów, przetwarzanej przez polecenie SQL
  • Podział ze względu na pochodzenie:
    • funkcje predefiniowane,
    • funkcje użytkownika.


3
Funkcje wierszowe
  • Użycie:








  • Podział:
    • funkcje znakowe
    • funkcje liczbowe
    • funkcje operujące na datach i interwałach czasowych
    • funkcje konwersji
    • pozostałe funkcje
4
Funkcje znakowe (1)
  • LOWER(wartość)
    • zamienia WIELKIE litery na małe
  • UPPER(wartość)
    • zamienia małe litery na WIELKIE
  • INITCAP(wartość)
    • zamienia pierwsze litery w słowie na duże
  • LPAD(wartość, n [,’ciąg’]), RPAD(wartość, n [,’ciąg’])
    • Uzupełnia kolumny z lewej (prawej) strony podanym ciągiem aż do długości n znaków. Jeśli ciąg nie został podany to wypełnia spacjami
5
Funkcje znakowe (2)
  • SUBSTR(wartość,n [,m])
    • z podanego łańcucha znaków wycina m znaków począwszy od pozycji n-tej
  • INSTR(wartość,’ciąg’ [,m,n])
    • wskazuje miejsce pierwszego (n-tego) wystąpienia ciągu w łańcuchu znaków począwszy od pozycji m-tej
  • LTRIM(wartość [,’znaki’]), RTRIM(wartość [,’znaki’])
    • usuwa z lewej (prawej) strony podane znaki (spacje)
  • LENGTH(wartość)
    • zwraca długość łańcucha znaków
6
Funkcje znakowe (3)
  • TRANSLATE(źródło,z,na)
    • Każde wystąpienie w źródle znaku z ciągu z zostanie zastąpione odpowiadającym mu znakiem z ciągu na
  • REPLACE(źródło,wzór,nowy)
    • Każde wystąpienie w źródle ciągu wzorzec zostanie zastąpione przez ciąg nowy
7
Funkcje liczbowe (1)
  • ROUND(wartość,n)
    • zaokrągla wartość do n-tego dziesiętnego miejsca po przecinku
  • TRUNC(wartość,n)
    • obcina wartość do n-tego dziesiętnego miejsca po przecinku
  • CEIL(wartość), FLOOR(wartość)
    • najmniejsza (największa) liczba całkowita większa lub równa (mniejsza lub równa) podanej wartości
8
Funkcje liczbowe (2)
  • POWER(wartość,n)
    • podnosi wartość do podanej potęgi
  • SQRT(wartość)
    • oblicza pierwiastek kwadratowy z podanej wartości
  • ABS(wartość)
    • oblicza wartość bezwzględną wyrażenia
  • MOD(wartość1, wartość2)
    • zwraca resztę z dzielenia
  • SIGN(wartość)
    • zwraca –1 jeśli wartość jest ujemna, 0 dla 0 i 1 jeśli wartość jest dodatnia

9
Funkcje operujące na datach (1)
  • Oracle przechowuje daty w polach typu DATE zawierających stulecie, rok, miesiąc, dzień, godzinę, minutę i sekundę. Zakres dat to 1 stycznia 4712 p.n.e do 31 grudnia 9999.
  • Funkcje CURRENT_DATE i CURRENT_TIMESTAMP zwracają bieżącą datę i znacznik czasowy. Funkcja Oracle SYSDATE zwraca bieżącą datę systemową.
  • Słowo kluczowe DATE służy do reprezentacji literałów typu DATE
    w domyślnym formacie rrrr-mm-dd.
  • Wewnętrznie daty są przechowywane w postaci liczb, możliwe jest stosowanie operatorów dodawania i odejmowania.
10
Funkcje operujące na datach (2)
  • EXTRACT (YEAR/MONTH/DAY/HOUR/MINUTE/SECOND/
    TIMEZONE_HOUR/TIMEZONE_MINUTE/TIMEZONE_REGION/
    TIMEZONE_ABBR FROM data/czas/interwał)
    • Zwraca jeden ze składników daty, znacznika czasowego lub interwału czasowego (np. dzień, rok, godzinę, ...)
11
Funkcje operujące na datach (3)
  • MONTHS_BETWEEN(data1,data2)
    • Zwraca liczbę miesięcy jakie upłynęły między datami
  • ADD_MONTHS(data,n)
    • Zwraca datę plus n miesięcy kalendarzowych
  • NEXT_DAY(data,dzień)
    • Zwraca następną datę po podanej przypadającą na podany dzień
  • LAST_DAY(data)
    • Zwraca datę ostatniego dnia w miesiącu podanej daty
12
Operacje na interwałach czasowych (1)
  • Interwał czasowy reprezentuje różnicę w czasie między datami
    i znacznikami czasowymi.
  • Typy interwałów: YEAR TO MONTH, DAY TO SECOND
  • Słowo kluczowe INTERVAL służy do reprezentacji literałów typu interwał czasowy.
  • Przykłady literałów interwałowych:
    • INTERVAL ’4 5:12’ DAY TO MINUTE - 4 dni, 5 godz. i 12 minut.
    • INTERVAL ’400 5’ DAY(3) TO HOUR - 400 dni 5 godz.
    • INTERVAL ’10’ HOUR - 10 godz.
    • INTERVAL ’10:22’ MINUTE TO SECOND - 10 minut 22 sekundy.
    • INTERVAL ’10’ MINUTE - 10 minut.
    • INTERVAL ’4’ DAY - 4 dni.
    • INTERVAL ’1-6’ YEAR TO MONTH – półtora roku
    • INTERVAL ’120’ HOUR(3) - 120 godz.
    • INTERVAL ’30.12345’ SECOND(2,4) – 30.12354 sek.
13
Operacje na interwałach czasowych (2)
14
Operacje na interwałach czasowych (3)
15
Funkcje konwersji
  • CAST (wartość AS typ) – ogólna standardowa funkcja konwersji
  • TO_CHAR(liczba|data [,’format’])
  • TO_NUMBER(‘tekst’)
  • TO_DATE(‘tekst’,’format’)



16
Funkcje polimorficzne
  • NVL(wyrażenie1,wyrażenie2)
    • Jeśli wyrażenie1 ma wartość różną od NULL to funkcja zwraca wyrażenie1, w przeciwnym przypadku zwraca wyrażenie2
  • NVL2(wyrażenie1,wyrażenie2, wyrażenie3)
    • Jeżeli wyrażenie1 ma wartość różną od NULL to funkcja zwraca wyrażenie2, w przeciwnym przypadku zwraca wyrażenie3
  • GREATEST(w1,....) LEAST(w1,....)
    • Zwraca największą (najmniejszą) wartość z listy
17
Wyrażenie CASE
18
Funkcja DECODE
19
Funkcje grupowe (agregujące)
  • Operują na podzbiorach krotek relacji, nazywanych grupami, wyznaczają wartość skalarną operując na zbiorze wartości odczytanych z wielu krotek.
  • funkcje:
    • AVG ([distinct|all] wyrażenie)
    • COUNT([distinct|all] wyrażenie)
    • MAX([distinct|all] wyrażenie)
    • MIN([distinct|all] wyrażenie)
    • SUM([distinct|all] wyrażenie)
    • VARIANCE([distinct|all] wyrażenie)
    • STDDEV([distinct|all] wyrażenie)


20
Podział krotek na grupy - klauzula GROUP BY (1)
21
Podział krotek na grupy - klauzula GROUP BY (2)
22
Podział krotek na grupy - klauzula GROUP BY (3)
  • UWAGA!!!!!
  • Na liście atrybutów w klauzuli SELECT mogą się pojawić TYLKO funkcje agregujące i atrybuty grupujące. Obecność każdego innego atrybutu spowoduje błąd.
23
Klauzula HAVING
  • Pozwala na wybór grup spełniających określone warunki, działa dla grup analogicznie jak klauzula WHERE dla pojedynczych krotek
    • wyświetl grupy etatowe, których maksymalna płaca podstawowa przekracza 1000 złotych
24
Sortowanie po grupowaniu
  • W klauzuli ORDER BY, zastosowanej w zapytaniu z grupowaniem, możemy umieścić jedynie atrybuty grupujące i/lub funkcje grupowe