1
|
- 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
|
- 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
|
- Użycie:
- Podział:
- funkcje znakowe
- funkcje liczbowe
- funkcje operujące na datach i interwałach czasowych
- funkcje konwersji
- pozostałe funkcje
|
4
|
- 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
|
- 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
|
- 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
|
- 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
|
- 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
|
- 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
|
- 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
|
- 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
|
- 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
|
|
14
|
|
15
|
- CAST (wartość AS typ) – ogólna standardowa funkcja konwersji
- TO_CHAR(liczba|data [,’format’])
- TO_NUMBER(‘tekst’)
- TO_DATE(‘tekst’,’format’)
|
16
|
- 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
|
|
18
|
|
19
|
- 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
|
|
21
|
|
22
|
- 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
|
- 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
|
- W klauzuli ORDER BY, zastosowanej w zapytaniu z grupowaniem, możemy
umieścić jedynie atrybuty grupujące i/lub funkcje grupowe
|