Bazy danych

Witryna zawiera podstawowe informacje odnośnie funkcji w bazach danych takich jak MySQL i Oracle oraz podstawowe informacje dotyczące zapytań.

wtorek, 21 lutego 2012

ORACLE - LPAD()

LPAD()


LPAD(string, dlugosc, string1)

Funkcja stosowana głównie do formatowania wyświetlanych wyników.


string - string do przetworzenia,

dlugosc - liczba znaków, które zwracamy. Jeżeli "dlugosc" jest mniejsza, niż długość "string", to "string" będzie obcięty do liczby znaków "dlugosc".

string1 - string którym zastąpimy znaki z lewej strony, w przypadku, gdy nasz string jest krótszy niż "dlugosc". Parametr ten jest opcjonalny. Jeżeli nie zostanie podany, zostaną wstawione spacje.

Działanie funkcji najlepiej zobrazują poniższe przykłady:


Przykład 1:
Wyświetlamy tylko dwa pierwsze znaki z tekstu, stąd wynikiem będzie "12".

SELECT lpad ( '1234', 2,) FROM DUAL;

LPAD('1234',2,'0')
------------------
12


Przykład 2:
Tekst "1234" zajmuje tylko 4 pola. Chcemy wyświetlić ten tekst w 5 polach, zatem jedno pole z lewej strony zostanie puste. W naszym przypadku puste pole zastępujemy znakiem "x", więc otrzymanym wynikiem jest "x1234".

SELECT lpad ( '1234', 5, 'x') FROM DUAL;

LPAD('1234',5,'X')
------------------
x1234

ORACLE - LOWER()

LOWER()


LOWER(string)

Zwraca "string", pisany wyłącznie małymi literami.


Przykład 1:
SELECT LOWER('DUZE LITERY') FROM DUAL;

LOWER('DUZELITERY')
-------------------
duze litery


Przykład 2:
SELECT LOWER('JaKiS tEkSt') FROM DUAL;

LOWER('JAKISTEKST')
-------------------
jakis tekst

ORACLE - INITCAP()

INITCAP()


INITCAP(string)

Zwraca podany przez nas "string", w którym pierwsza litera W KAŻDYM SŁOWIE jest piasana dużą literą, zaś pozostałe małymi literami.


Przykład 1:
SELECT INITCAP('mala litera') FROM DUAL;

INITCAP('MALALITERA')
---------------------
Mala Litera


Przykład 2:
SELECT INITCAP('Mala Litera') FROM DUAL;

INITCAP('MALALITERA')
---------------------
Mala Litera

ORACLE - CONCAT()

CONCAT()

CONCAT(string, string1)

Funkcja łączy dwa stringi w całości.


Przykład 1:
SELECT CONCAT('Ala', ' ma kota') FROM DUAL;

CONCAT('ALA','MAKOTA')
----------------------
Ala ma kota

ORACLE - CHR()

CHR()


CHR(wartosc)
Funkcja zwraca znak przypisany do danej wartości w kodzie ASCII. (patrz UWAGA)

UWAGA!!!
Jeżeli maszyna używa kodowania EBCDIC zostanie zwrócony znak dla tego właśnie kodowania.



Przykład 1:
Używamy funkcji CHR() dla komputera korzystającego z ASCII.

SELECT CHR(97) FROM DUAL;

CHR(97)
-------
a


Jeżeli użyjemy wartości większej niż 256, wynik zostanie zwrócony używając reszty z dzielenia podanej przez nas wartości przez 256.

SELECT CHR(97+256) FROM DUAL;

CHR(97+256)
-----------
a

ORACLE - WIDTH_BUCKET()

WIDTH_BUCKET()

WIDTH_BUCKET(wartosc1, wartosc2, wartosc3, wartosc4)

Dzieli zbiór na określoną przez nas liczbę podzbiorów.
wartosc1 - określa zbiór, na którym będziemy tworzyli nasze przedziały (np. tabela)
wartosc2 - dolny zakres przedziału.
wartosc3 - górny zakres przedziału.
wartosc4 - liczba przedziałów, na które dzielimy dany przedział

UWAGA!!!
Jako "wartosc1" mogą być brane pod uwagę wartości numeryczne, albo daty.

Liczba przedziałów, na które dzielimy równa się "LICZBA PRZEDZIAŁÓW + 1"!


Poniższy przykład bardzo dobrze zobrazuje działanie funkcji:

Tworzymy tabelę MOJATABELA z jedną kolumną "i" (NUMBER - przechowujemy liczby).
CREATE TABLE MOJATABELA (
i NUMBER
);

Dodajemy rekordy do tabeli:
INSERT INTO MOJATABELA VALUES(10);
INSERT INTO MOJATABELA VALUES(20);
INSERT INTO MOJATABELA VALUES(30);
INSERT INTO MOJATABELA VALUES(40);
INSERT INTO MOJATABELA VALUES(50);


CREATE TABLE succeeded.
1 rows inserted
1 rows inserted
1 rows inserted
1 rows inserted
1 rows inserted


Wyświetlamy zawartość tabeli MOJATABELA;
SELECT * FROM MOJATABELA;

I
----------------------
10
20
30
40
50

5 rows selected


Przykład 1:
SELECT i, WIDTH_BUCKET(i, 10, 50, 4) FROM MOJATABELA;

I WIDTH_BUCKET(I,10,50,4)
---------------------- -----------------------
10 1
20 2
30 3
40 4
50 5

5 rows selected


Liczby 10,20,30,40,50 są dzielone na 5 przedziały (4+1).

Przedział zerowy (..., 10)
Pierwszy przedział <10,20)
Drugi przedział <20, 30)
Trzeci przedział <30, 40)
Czwarty przedział <40, 50)
Piąty przedział <50, ...)

niedziela, 19 lutego 2012

ORACLE - TRUNC()

TRUNC()


TRUNC(wartosc,wartosc1)

Zwraca liczbę "wartosc", uciętą do "wartosc1" miejsc "po przecinku".

"wartosc1" jest opcjonalne. Jeżeli nie zostanie podane domyślnie wstawiane jest 0.
Jeżeli "wartosc1", jest liczbą 0, wtedy wynikiem jest liczba zwróciona bez części dziesiętnej. (przykład 3)

UWAGA!!!
"wartosc1" może być też liczbą ujemną. (przykład 2).



Przykład 1:
SELECT TRUNC(13.12, 1 ) FROM DUAL;

TRUNC(13.12,1)
----------------------
13,1


Przykład 2:
SELECT TRUNC(13.12, -1 ) FROM DUAL;

TRUNC(13.12,-1)
----------------------
10


Przykład 3:
SELECT TRUNC(13.12, 0 ) FROM DUAL;

TRUNC(13.12,0)
----------------------
13

ORACLE - TANH()

TANH()


TANH(wartosc)

Zwraca tangens hiperboliczny dla wartości "wartosc".



Przykład 1:
SELECT TANH(0) FROM DUAL;


TANH(0)
----------------------
0

1 rows selected

ORACLE - TAN()

TAN()

TAN(wartosc)

Zwraca tangens z liczby "wartosc".


Przykład 1:
SELECT TAN(0) FROM DUAL;

TAN(0)
----------------------
0

ORACLE - SQRT()

SQRT()


SQRT(wartosc)

Zwraca pierwiastek kwadratowy z liczby "wartosc".

Dla "wartosc = 0" rezultatem jest 0.
Dla "wartosc < 0" rezultatem jest NaN (NOT A NUMBER)


Przykład 1:
SELECT SQRT(4) FROM DUAL;

SQRT(4)
----------------------
2



Przykład 2:
SELECT SQRT(16) FROM DUAL;

SQRT(16)
----------------------
4

ORACLE - SINH()

SINH()


SINH(wartosc)

Zwraca sinus hiperboliczny dla wartości "wartosc".



Przykład 1:
SELECT SINH(0) "sinus hiperboliczny" FROM DUAL;


sinus hiperboliczny
----------------------
0

ORACLE - SIN()

SIN()


SIN(wartosc)

Funkcja zwraca Sinus dla podanej wartosci.


Przykład 1:
SELECT SIN(0) FROM DUAL;

SIN(0)
----------------------
0


Przykład 2:
Sinus 90 stopni wynosi. (wynik wynika z dokładności liczby PI)

SELECT SIN(90 * 3.14159265359/180) FROM DUAL;

SIN(90*3.14159265359/180)
-------------------------
0,9999999999999999999999999946562083337476

ORACLE - SIGN()

SIGN()

SIGN(wartosc)

Zwraca signum liczby.
Signum liczby oznacza znak liczby.

Dla liczb większych od zera wynikiem jest 1.
Dla liczby równej zero wynikiem jest 0.
Dla liczb ujemnych wynikiem jest -1.


Przykład 1:
SELECT SIGN(-10) FROM DUAL;

SIGN(-10)
----------------------
-1



Przykład 2:
SELECT SIGN(5) FROM DUAL;

SIGN(5)
----------------------
1

piątek, 17 lutego 2012

ORACLE - ROUND()

ROUND()


ROUND(wartosc) lub ROUND(wartosc, wartosc1)

Funkcja ROUND zwraca zaokrągloną liczbę.
"wartosc1" określa do ilu miejsc po przecinku ma być zaokrąglona liczba (gdy "wartosc1" jest dodatnia).
Jeżeli argument "wartosc1" nie jest określony, domyslnie przypisywane jest 0, czyli zaokrąglenie do części całkowitych.


Przykład 1:
SELECT ROUND(1.5) FROM DUAL;

ROUND(1.5)
----------------------
2


SELECT ROUND(1.5, 0) FROM DUAL;

ROUND(1.5,0)
----------------------
2



Przykład 2:
SELECT ROUND(1.1234, 2) FROM DUAL;

ROUND(1.1234,2)
----------------------
1,12


Przykład 3:
SELECT ROUND(1.1264, 2) FROM DUAL;

ROUND(1.1264,2)
----------------------
1,13





Dla "wartosc1" mniejszej od zera zaokrąglamy liczbę od miejsc położonych na lewo od części dziesiętnych.

Przykład 4:
SELECT ROUND(12.1264, -1) FROM DUAL;

ROUND(12.1264,-1)
----------------------
10


Przykład 5:
SELECT ROUND(12.1264, -2) FROM DUAL;

ROUND(12.1264,-2)
----------------------
0

ORACLE - REMAINDER()

REMAINDER()


REMAINDER(wartosc_dzielona,dzielnik)

Zwraca resztę z dzielenie "wartosc_dzielona" przez "dzielnik".

Różnica przy użyciu REMAINDER, zamiast funkcji MOD jest taka, iż REMAINDER korzysta z ROUND(), zaś MOD() z FLOOR() przy ustalaniu wyniku.
(W celu prześledzenia działania funkcji MOD(), ROUND(), FLOOR() zapraszam do przeczytania artykułów opisujących funkcje)



Najlepszym przykładem różnicy działania funkcji będzie opisanie krok po kroku.


SELECT 2/3 FROM dual;

2/3
----------------------
0,6666666666666666666666666666666666666667


Dzielenie liczby 2 przez liczbę 3 daje wynik 0.666

Dla FLOOR(0.666) wynikiem będzie 0.
Dla ROUND(0.666) wynikiem będzie 1.

Jako, że funkcja MOD() korzysta z FLOOR (wynik 0), będziemy mieli 0 i 2 reszty.
Funkcja REMAINDER() korzsyta z ROUND (wynik 1), będziemy mieli 1 i -1 reszty.
1x3 = 3
3+(-1) = 2


SELECT REMAINDER(2,3) FROM dual;

REMAINDER(2,3)
----------------------
-1



SELECT MOD(2,3) FROM dual;

MOD(2,3)
----------------------
2

ORACLE - POWER()

POWER()

POWER(wartosc1, wartosc2)

Funkcja zwraca liczbę "wartosc1" podniesioną do potęgi "wartosc2".

UWAGA!!!
Jeżeli "wartosc1" jest liczbą ujemną, "wartosc2" musi być liczbą całkowita.

SELECT POWER(-2,3.1) FROM DUAL;

SELECT POWER(-2,3.1) FROM DUAL
Error report:
SQL Error: ORA-01428: argument '-2' is out of range
01428. 00000 - "argument '%s' is out of range"
*Cause:
*Action:


Przykład 1:
SELECT POWER(-2,3) FROM DUAL;

POWER(-2,3)
----------------------
-8

1 rows selected


Przykład 2:
SELECT POWER(2,2) FROM DUAL;

POWER(2,2)
----------------------
4

1 rows selected

ORACLE - NANVL()

NANVL()


NANVL(wartosc_sprawdzana, wartosc_zwracana)

Zwraca "wartosc_zwracana" jeżeli "wartosc_sprawdzana" jest wartością NaN. NOT A NUMBER
Używana jest głównie do konwersji NaN na inne wartości.

Funkcja działa tylko na typach BINARY_FLOAT lub BINARY_DOUBLE.


Przykład 1:
CREATE TABLE MOJATABELA (
KOLUMNA BINARY_FLOAT
);


INSERT INTO MOJATABELA VALUES('NaN');
SELECT KOLUMNA, NANVL(KOLUMNA, 0) FROM MOJATABELA;


CREATE TABLE succeeded.
1 rows inserted
KOLUMNA NANVL(KOLUMNA,0)
------- ----------------
NaN 0.0

1 rows selected

ORACLE - MOD()

MOD()

MOD(liczba, dzielenie)

Funkcja zwraca resztę z dzielenia liczby "liczba" przez "dzielenie".

Dla przykładu liczbe 7 dzielimy przez 2.
Wynikiem jest 3.5.

W liczbie 7 liczba 2 "zmieści się" 3 razy. Resztą jest liczba 1.
2x3 + 1 = 7

UWAGA!!!
Jeżeli wartość drugiego argumentu jest równa 0 zwracany jest argument pierwszy.

W funkcji MOD() musza być podane dwa argumenty, w przeciwnym wypadku zostanie zwrócony błąd:

SELECT MOD(-7) FROM DUAL
Error at Command Line:1 Column:7
Error report:
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 - "invalid number of arguments"
*Cause:
*Action:


Przykład 1:
SELECT MOD(7,2) FROM DUAL;

MOD(7,2)
----------------------
1

1 rows selected


UWAGA!!!
Funkcja MOD() dla liczby ujemnej nie zachowuje się w sposób standardowy.

SELECT MOD(-7,-3) FROM DUAL;

MOD(-7,-3)
----------------------
-1

-7 : -3 = 2 reszty -1


Standardowe podejście matematyczne zwróciłoby następujący wynik:

-7 : -3 = 3 reszty -2

ORACLE - LOG()

LOG()


lub LOG(wartosc1, wartosc2)

Funkcja zwraca wartosc logarytmu przy podstawie z wartosc1 z liczby wartosc2.

UWAGA!!!

"wartosc1" musi być liczbą większą od 1.
"wartosc2" musi być liczbą dodatnią.
w przeciwnym wypadku zostanie zwrócony błąd:

SELECT log(1,8) FROM DUAL
Error report:
SQL Error: ORA-01428: argument '1' is out of range
01428. 00000 - "argument '%s' is out of range"
*Cause:
*Action:


W funkcji LOG() muszą być określone dwa argumenty

SELECT log(10) FROM DUAL
Error at Command Line:1 Column:7
Error report:
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 - "invalid number of arguments"
*Cause:
*Action:


Przykład 1:
SELECT log(10,1) "logarytm dziesietny z 1" FROM DUAL;

logarytm dziesietny z 1
-----------------------
0

1 rows selected


Przykład 2:
SELECT log(10,10) "logarytm dziesietny z 10" FROM DUAL;

logarytm dziesietny z 10
------------------------
1

1 rows selected

ORACLE - LN()

LN()

LN(wartosc)

Funkcja zwraca logarytm naturalny z liczby "wartosc".

UWAGA!!!
Jeżeli liczba "wartosc" jest mniejsza lub równa 0 zwrócony zostanie bład.

SELECT LN(0) "logarytm naturalny" FROM DUAL
Error report:
SQL Error: ORA-01428: argument '0' is out of range
01428. 00000 - "argument '%s' is out of range"
*Cause:
*Action:


Przykład 1:
EXP(1) zwraca wartość liczby e.

SELECT LN(EXP(1)) "logarytm naturalny z liczby e" FROM DUAL;

logarytm naturalny z liczby e
-----------------------------
1

1 rows selected

ORACLE - FLOOR()

FLOOR()

FLOOR(wartosc)

Funkcja zwraca liczbę całkowitą nie większą niż "wartosc". (podłoga liczby)


Przykład 1:
SELECT FLOOR(5.31) "podloga liczby" FROM DUAL;

podloga liczby
----------------------
5

1 rows selected


Przykład 2:
SELECT FLOOR(8.31) "podloga liczby" FROM DUAL;

podloga liczby
----------------------
8

1 rows selected

ORACLE - EXP()

EXP()

EXP(wartosc)

Funkcja zwraca wartość liczby e podniesionej do potęgi "wartosc".


EXP(1) = e^1
EXP(0) = e^0


Przykład 1:
SELECT EXP(1) "liczba e" FROM DUAL;

liczba e
----------------------
2,71828182845904523536028747135266249776

1 rows selected

ORACLE - COSH()

COSH()


COSH(wartosc)

Zwraca cosinus hiperboliczny dla wartości "wartosc".



Przykład 1:
SELECT COSH(0) "cosinus hiperboliczny" FROM DUAL;


cosinus hiperboliczny
----------------------
1

1 rows selected

czwartek, 2 lutego 2012

ORACLE - COS()

COS()


COS(wartosc)

Funkcja zwraca cosinus dla podanej wartosci.


Przykład 1:
SELECT COS(1) "cosinus" FROM DUAL;

cosinus
----------------------
0,5403023058681397174009366074429766037354

1 rows selected

ORACLE - CEIL()

CEIL(wartosc)

Zwraca najmniejszą liczbę całkowitą nie mniejszą niż "wartosc".


Przykład 1:
SELECT CEIL(1.5) "Sufit" FROM DUAL;

Sufit
----------------------
2

1 rows selected


Przykład 2:
SELECT CEIL(-1.5) "Sufit" FROM DUAL;

Sufit
----------------------
-1

1 rows selected

ORACLE - BITAND()

BITAND()


BITAND(wartosc1, wartosc2)

Zwraca liczbę całkowitą po operacji koniunkcji liczb "wartosc1" oraz "wartosc2" (w reprezentacji binarnej).



Działanie funkcji BITAND najlepiej zobrazuje poniższy przykład.

BITAND(7,5)

Liczba 7 w systemie dwójkowym wynosi 111
Liczba 5 w systemie dwójkowym wynosi 101

Stosując AND na bitach 111 i 101 otrzymujemy 101, dlaczego ?

111
101

patrząc od prawej 1 i 1 (ostatnia kolumna) - daje nam 1.
następna kolumna - 1 i 0 - wynik 0.
kolumna pierwsza - 1 i 1 - wynik 1.


Liczba 101 w reprezentacji dwójkowej wynosi 5.



SELECT BITAND(7,5) FROM DUAL;


BITAND(7,5)
----------------------
5

1 rows selected



UWAGA!!!
Wartości w funkcji BITAND() mają bardzo duży zakres.
Możemy używać wartości z zakresu (-2)^(n-1) do 2^(n-1) dla n=128.

ORACLE - ATAN2()

ATAN2()


ATAN2(wartosc1, wartosc2)

Funkcja zwraca arcus tangens dla podanych wartosci.

ATAN2(wartosc1, wartosc2) jest równoznaczne z ATAN(wartosc1/wartosc2).


Przykład 1:
SELECT ATAN2(1.5,1.5) "ATAN2" FROM DUAL;

ATAN2
----------------------
0,7853981633974483096156608458198757210546

1 rows selected


Przykład 2:
SELECT ATAN(1.5/1.5) "ATAN" FROM DUAL;

ATAN
----------------------
0,7853981633974483096156608458198757210546

1 rows selected

ORACLE - ATAN()

ATAN()


ATAN(wartosc)

Funkcja zwraca arcus tangens dla podanej wartosci. Zwróciona wartość jest z zakresu od -PI/2 do PI/2 wyrażone w radianach.


Przykład 1:
SELECT ATAN(1) "Arcuc tangens" FROM DUAL;

Arcuc tangens
----------------------
0,7853981633974483096156608458198757210546

1 rows selected


Przykład 2:
SELECT ATAN(-2) "Arcus tangens" FROM DUAL;


Arcus tangens
----------------------
-1,10714871779409050301706546017853704007

1 rows selected

ORACLE - ASIN()

ASIN()


ASIN(wartosc)

Funkcja zwraca arcus sinus dla podanej wartosci. Zwróciona wartość jest z zakresu od -PI/2 do PI/2 wyrażone w radianach.

UWAGA!!!
"wartosc" musi byc z zakresu <-1, 1>. W przeciwnym razie zostanie zwrócony błąd:

SQL Error: ORA-01428: argument 'XXX' is out of range
01428. 00000 - "argument '%s' is out of range"



Przykład 1:
SELECT ASIN(0.5) "Arcus sinus" FROM DUAL;

Arcus sinus
----------------------
0,52359877559829887307710723054658381405

1 rows selected


Przykład 2:
SELECT ASIN(1.01) "Arcus sinus" FROM DUAL;


SELECT ASIN(1.01) "Arcus sinus" FROM DUAL
Error report:
SQL Error: ORA-01428: argument '1.01' is out of range
01428. 00000 - "argument '%s' is out of range"
*Cause:
*Action:

ORACLE - ACOS()

ACOS()


ACOS(wartosc)

Funkcja zwraca arcus cosinus dla podanej wartosci. Zwróciona wartość jest z zakresu od 0 do PI wyrażona w radianach.

UWAGA!!!
"wartosc" musi byc z zakresu <-1, 1>. W przeciwnym razie zostanie zwrócony błąd:

SQL Error: ORA-01428: argument 'XXX' is out of range
01428. 00000 - "argument '%s' is out of range"



Przykład 1:
SELECT ACOS(0.5) "Arcuc cosinus" FROM DUAL;

Arcuc cosinus
----------------------
1,04719755119659774615421446109316762805

1 rows selected


Przykład 2:
SELECT ACOS(1.01) "Arcuc cosinus" FROM DUAL;


SELECT ACOS(1.01) "Arcuc cosinus" FROM DUAL
Error report:
SQL Error: ORA-01428: argument '1.01' is out of range
01428. 00000 - "argument '%s' is out of range"
*Cause:
*Action:

ORACLE - ABS()

ABS()


ABS(wartosc)

Funkcja zwraca wartość bezwzględną "wartosc".


Przykład 1:
SELECT ABS(15) "Wartosc bezwzgledna" FROM DUAL;

Wartosc bezwzgledna
----------------------
15

1 rows selected



Przykład 2:
SELECT ABS(-15) "Wartosc bezwzgledna" FROM DUAL;

Wartosc bezwzgledna
----------------------
15

1 rows selected