Składnia SQL Oracle

Wyrażenia logiczne


Wyrażenia logiczne mogą występować w poleceniu SELECT w klauzulach WHERE i HAVING .

Operatory porównania

Najprostsze wyrażenie logiczne można przedstawić następująco:

Wartość1 op_porównania wartość2

gdzie:

wartośc1, wartość2 – wartości (wyrażenia) tego samego typu,

op_porównania - operator porównania.

Wybrane operatory porównania dostępne w języku SQL:

Operator Opis
= równa się,
!=, <> nie równa się,
>,< większe od, mniejsze od,
>=<= większe bądź równe, mniejsze bądź równe,
[NOT] IN [nie] należy do zbioru, zbiór może być podany poprzez wyliczenie lub SELECT zagnieżdżony,
IS [NOT] NULL [nie] jest NULL
[NOT] BETWEEN x AND y [nie] większe lub równe x i mniejsze lub równe y
[NOT] LIKE x wyszukiwanie tekstu wg. wzorca, znaki uogólniające: % – dowolna ilość, dowolnych znaków, – jeden, dowolny znak,

Wartość NULL


Oprócz wartości TRUE i FALSE, wyrażenia logiczne w Oracle’u mogą przyjmować wartość NULL. Wartość NULL jest wartością specjalną, oznaczającą brak danych. Operacja porównania, w której jako jeden ze składników występuje wartość NULL, zwróci wartość logiczną NULL.

W poleceniach SQl, można stosować specjalną funkcję – NVL:

NVL{wyrażenie1, wyrażenie2) gdzie:

wyrażenie l - wyrażenie numeryczne lub znakowe,

wyrażenie2 - wyrażenie o typie zgodnym z typem wyrażenia1

Funkcja NVL zwraca wartość wyrażenia l jeżeli jest ona różna od NULL, albo wartość wyrażenia2 w przeciwnym przypadku.

Przykład Kto nie otrzymuje prowizji?

SQL> select ename,

2 comm

3 from emp

4 where nvl (comm, 0) = 0;

Wyrażenia arytmetyczne


Wyrażenia arytmetyczne mogą być budowane przy użyciu operatorów i funkcji arytmetycznych. W wyrażeniu arytmetycznym mogą występować nazwy kolumn numerycznych i stałe numeryczne. Dopuszczalne jest użycie wyrażeń arytmetycznych w we wszystkich klauzulach polecenia SELECT, oprócz klauzuli FROM.

Operatory arytmetyczne

Operatory arytmetyczne dostępne w języku SQL:

Operator Opis
- wartość przeciwna,
+,- dodawanie, odejmowanie,
*./ mnożenie, dzielenie

 

Funkcje arytmetyczne


Wybrane funkcje arytmetyczne dostępne w języku SQL:

Operator Opis
ABS(n) wartość absolutna z n,
COS(n) cosinus z n (kąt w radianach)
GREATEST(n1 [,n2]…) największa wartość z listy,
LEAST(n1 [,n2]…) najmniejsza wartość z listy,
LN(n) logarytm naturalny z n.
LOG(m,n) logarytm z n przy podstawie m,
POWER(m,n) m do n-te] potęgi,
ROUND(m,[n]) m zaokrąglone do n miejsc po przecinku,
SIGN(n) znak n,
SIN(n) sinus z n (kąt w radianach),
TO_CHAR(n) konwersja liczby n na tekst,
TRUNC(m,[n]) m obcięte do n miejsc po przecinku,

 Funkcje tekstowe


Wybrane funkcje tekstowe dostępne w języku SOŁ:

Operator Opis
INITCAP(t) zwraca tekst t w postaci: pierwsza litera duża, pozostałe małe,
LOWER(t) zwraca tekst t małymi literami,
LPAD( t1, n, [,t2]) dodaje do t1 z lewej strony tyle wystąpień t2, aby łączna długość tekstu wynosiła n,
LTRIM(t1, t2 ) usuwa wszystkie początkowe wystąpienia t2 w t1,
REPLACE( t1, t2, [t3] ) zamienia wszystkie wystąpienia t2 w t1 na t3,
RPAD(t1, n, t2 ) dodaje do t1 z prawej strony tyle wystąpień t2, aby łączna długość tekstu wynosiła n,
RTRIM( t1, t2 ) usuwa wszystkie końcowe wystąpienia t2 w t1,
SUBSTR( t1, m, n ) zwraca fragment t1 o długości n od pozycji m,
TRANSLATE( t1. t2, t3 ) wykonuje translację znaków z t1 zamieniając znaki występujące w t2 na odpowiednie znaki w t3,
UPPER(t) zwraca tekst t dużymi literami,
INSTR(t1,t2,[,n[,m]]) przeszukuje tekst t1 począwszy od pozycji n i zwraca pozycję m-tego wystąpienia tekstu t2 w tl,
LENGH( t) zwraca długość tekstu t,
TO_NUMBER(t) wykonuje konwersję tekstu t na liczbę, pod warunkiem, że t jest w odpowiednim formacie.
DECODE(flag,’N’,’Nie’,’T’,’Tak’) zamienia wszystkie ‚N’ na ‚Nie’ , a ‚T’ na ‚Tak’ w polu flag

Działania na datach


Data jest oddzielnym typem w Oracle’u. Wartość typu data zawiera zawsze pełną informację:

rok, miesiąc, dzień, godzina, minuta, sekunda. Format przechowywania daty jest formatem wewnętrznym Oracle’a. Jeżeli chcemy wybrać datę z bazy danych, musi zostać wykonana konwersja daty na postać znakową. Podobnie, wprowadzając datę używamy tekstu opisującego datę.

Format daty

Wprowadzając lub wybierając datę można określić jej format. W tym celu należy użyć funkcji:

do wybierania

TO_CHAR( data, ‚ format‚ )

do wprowadzania

TC_DATE( data, /format‚ )

gdzie:

data – wartość typu data, format - format daty.

Wybrane elementy formatu daty:

Element formatu Opis

-/,.;: „tekst”

znaki interpunkcyjne, stała tekstowa wyświetlana z datą,

HH, HH24,

AM, A.M., PM, P.M,

godzina (1-12), godzina (0-23), wskaźnik przed/po południu,

MI

minuta (0-59).
SS,

ssss.

sekunda (0-59), sekundy po północy (0-86399),

D, DAY, DY, DD, DDD

dzień tygodnia (1-7), nazwa dnia tygodnia, skrót nazwy dnia, dzień miesiąca (1-31), dzień roku (1-336),
MM, miesiąc (1-12),
MONTH, nazwa miesiąca,
MON, skrót nazwy miesiąca,
RM, rzymski numer miesiąca (I-XII),
YEAR, rok słownie (tylko po angielsku),
YYYY, YYY, YY, Y rok: cztery cyfry, ostanie trzy cyfry, ostatnie dwie cyfry,ostatnia cyfra.

 

Format specjalny RR uwzględnia dwie ostatnie cyfry roku w następujący sposób:

Dwie ostatnie cyfry bieżącego roku mieszczą się w przedziale:

 

0-49

 

50-99

Podane dwie ostatnie cyfry roku mieszczą się w przedziale:

0-49 50-99

zwracana jest data w bieżącym stuleciu zwracana jest data w poprzednim stuleciu
zwracana jest data w następnym stuleciu zwracana jest data w bieżącym stuleciu

 Jeżeli przy wprowadzaniu/ wybieraniu daty nie użyjemy funkcji formatującej, będzie użyty format domyślny daty. Format domyślny daty zależy od wersji językowej bazy danych. Typowy format domyślny to ‚DD-MON-YY’.

Funkcje działające na datach

Wybrane funkcje działające na datach:

Element formatu Opis

ADD_MONTHS(d, n) LASTDAY(d/)

MONTHS_BETWEEN( dl, d2) SYSDATE

 

dodaje do daty d, n miesięcy, zwraca datę,

zwraca datę ostatniego dnia miesiąca zawartego w dacie d, zwraca liczbę miesięcy pomiędzy datami dl i d2,

zwraca datę (pełną informację) bieżącą.

 Dodatkowo można wykonywać następujące operacje na datach:

datal – data2 - wynikiem jest liczba dni dzielących daty,

data1 +/- n - wynikiem jest data1 powiększona/ pomniejszona o n dni.

Funkcje grupowe


Funkcje grupowe liczą wartości dla grupy wierszy, uwzględniając opcje:

DISTINCT – brane są tylko unikalne wartości,

• ALL – brane są wszystkie wartości, jest to opcja domyślna.

Wszystkie funkcje grupowe, oprócz COUNT, ignorują wartości NULL. Jeżeli zapytanie nie przekaże do funkcji grupowej żadnych wierszy, lub wiersze z wartościami NULL, to funkcja grupowa zwróci wartość NULL.

Wybrane funkcje działające na grupach wierszy:

Funkcja Opis
AVG([opcja]wyr)

COUNT( * | [opcja] wyr )

 

MAX([opcja]wyr) MIN([opcja]wyr) SUM([opcja]wyr)

 

wartość średnia wyrażenia wyr,

liczba wierszy wybranych zapytaniem, jeżeli argumentem jest *, to funkcja zwróci liczbę wszystkich wierszy łącznie z wartościami NULL,

wartość maksymalna wyrażenia wyr,                  wartość minimalna wyrażenia wyr,                               suma wartości wyrażenia wyr,

Operacje na zbiorach


Wyniki kilku poleceń SELECT można połączyć w jeden za pomocą operatorów działających na zbiorach. Zapytania połączone operatorem muszą mieć identyczną liczbę i typ wybieranych kolumn. Jeżeli więcej niż dwa zapytania łączymy w jeden zbiór to wynik jest wyliczany parami od lewej strony. Aby zmienić kolejność wyliczeń możemy użyć nawiasów.

Składnia

[ ( ] SELECT … [ ) ] opera tor zbioru. [ ( J SELECT … [ ) ]

• • •

gdzie:

operator_zbioru – dowolny operator działający na zbiorach.

Operatory działające na zbiorach

Operator Opis
UNION suma zbiorów,
UNION ALL suma zbiorów powiększona o wiersze powielające się,
INTERSECT część wspólna zbiorów,
MINUS różnica zbiorów

 

Źródło:    ORACLE7 Serwer        Język SQL                                                 © IFS Poland Sp. z o.o.

zmiany i opracownie własne