Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Kifejezések. A legfontosabb függvények.
Az SQL 3. Kifejezések. A legfontosabb függvények. sql03 kifejezések, függvények
2
Az alapvető adattípusok
Szám Szöveg Dátum Logikai
3
A NULL érték 1. Ismeretlen, határozatlan, hiányzó adatot jelöl
az Oracle9i-ben és az SQL serverben az üres string egyenértékű a NULL értékkel Bármilyen adattípusú mező értéke lehet NULL Ha szerepel egy aritmetikai vagy logikai kifejezésben, akkor az egész kifejezés értéke NULL, kivéve: TRUE OR NULL értéke TRUE FALSE AND NULL értéke FALSE
4
A NULL érték 2. Semmivel sem egyenlő (önmagával se!): Kezelése:
X = NULL értéke mindig FALSE NULL = NULL értéke is FALSE Kezelése: feltételekben: pl. X IS NULL, X IS NOT NULL feldolgozásnál: NVL függvény (pl. 0-val helyettesíthető)
5
Számok kezelése
6
Numerikus konstansok Alakjuk a szokásos, pl. +3.14 25.3e-3 -15
Tizedes pont helyett tizedes vessző használata is beállítható a szerveren Decimális számábrázolás Legfeljebb 38 számjegy pontosság A karakterisztika -130 és 125 között lehet
7
Aritmetikai operátorok
nincs hatványozás!
8
A numerikus függvények
Abszolút érték, előjel: ABS SIGN Maradék: MOD Hatványozás, négyzetgyök: POWER SQRT Kerekítés, csonkolás: CEIL FLOOR ROUND TRUNC Exponenciális, logaritmus: EXP LN LOG Trigonometrikus: COS SIN TAN Arkusz: ACOS ASIN ATAN ATAN2 Hiperbolikus: COSH SINH TANH Egyéb: BITAND WIDTH_BUCKET van köztük, amelyik csak 30 jegyre pontos! hisztogramm-készítéshez
9
Néhány numerikus függvény részletesebben
ABS(szám): a szám abszolút értéke MOD(a, b): az a:b egész osztás maradéka ROUND(a [, b]): a-t kerekíti b db tizedesre (default: b=0). b negatív is lehet! SIGN(a): az a szám előjele (-1, 0 vagy 1) TRUNC (a [, b]): a-t csonkolja b db tizedesre (default: b=0). b negatív is lehet!
10
ABS(<numeric expression>)
SELECT ABS(-100) negative, ABS(100) positive;
11
ATAN(<numeric expression>)
SELECT ATAN(.5) AS FIRST_RESULT,
12
CEIL[ING](<numeric expression>) FLOOR(<numeric expression>)
Hány 20 forintos kell az egyes cikkek 1-1 darabjának kifizetéséhez? SELECT egysegar, CEIL(egysegar/20) FROM cikk; Mennyi pénzt kapunk vissza, ha így fizetünk? SELECT egysegar, CEIL(egysegar/20), 20*CEIL(egysegar/20)-egysegar FROM cikk;
13
Példák 2. Mennyi a cikkek bruttó egységára egész forintra kerekítve (15%-os ÁFA-t feltételezve)? SELECT cikknev, egysegar, ROUND(1.15*egysegar) FROM cikk; Ugyanez 10 fillérre kerekítve: SELECT cikknev, egysegar, ROUND(1.15*egysegar, 1) FROM cikk; Ugyanez 10 forintra kerekítve: SELECT cikknev, egysegar, ROUND(1.15*egysegar, -1) FROM cikk; Ugyanez 5 forintra kerekítve: SELECT cikknev, egysegar, ROUND(2*1.15*egysegar, -1)/2 FROM cikk;
14
Példák 3. Címletezés: hány 5, 2 és 1 forintossal lehet kifizetni a cikkek nettó árát? SELECT cikknev, egysegar, TRUNC(egysegar / 5) as ot_ft, TRUNC(MOD(egysegar, 5) / 2) AS ket_ft, MOD(MOD(egysegar, 5), 2) AS egy_ft FROM cikk;
15
PI() SELECT PI() AS RESULT_OF_PI
16
RAND(<numeric_expression>)
SELECT RAND() random_num ROUND((RAND()* 10000),0) from_zero_to_10000
17
SQUARE(<numeric expression>)
SELECT SQUARE(2) AS SQUARE_OF_2, SQUARE(3) AS SQUARE_OF_3, SQUARE(4) AS SQUARE_OF_4
18
Szövegek kezelése
19
Szöveges konstansok Aposztrófok közé kell zárni
Ha a szövegben aposztróf van, azt meg kell kettőzni: ‘McDonald’’s’ A szövegkonstansokban a kisbetű nem azonos a nagybetűvel! A szerveren beállítható, hogy milyen kódolással tárolja a karaktereket A maximális hossz 4000 karakter
20
A szöveges függvények Hossz: LENGTH
Rész-string kezelése: INSTR REPLACE SUBSTR Karakterkód: ASCII CHR Csonkolás, kitöltés: LPAD LTRIM RPAD RTRIM TRIM Kisbetű-nagybetű: INITCAP LOWER UPPER Nemzeti karakterkészlet kezelése: NLS_INITCAP NLS_LOWER NLSSORT NLS_UPPER Egyéb: CONCAT SOUNDEX TRANSLATE TREAT
21
Fontosabb szöveges függvények 1.
ASCII(szöveg): a szöveg első karakterének kódja CHR(kód): az adott kódú karakter INITCAP(szöveg): a szöveg minden szavának első betűjét nagybetűre váltja INSTR(szöveg, keresendő [, kezdőhely [, hányadik]]): a keresendő szövegnek a szövegben való kezdőhely utáni hányadik előfordulásának kezdőpozícióját adja
22
Fontosabb szöveges függvények 2.
LENGTH(szöveg): a szöveg hossza LOWER(szöveg): a szöveget teljesen kisbetűssé alakítja LPAD(szöveg, hossz [, kitöltő]): a szöveget hossz hosszúságúra alakítja úgy, hogy a bal végére a kitöltő szöveget fűzi a kellő számban (default: a kitöltő egy szóköz) LTRIM(szöveg [, karakterek]): a szöveg bal végéről eltávolítja a felsorolt karakterek mindegyikét (default: a karakterek egy szóköz)
23
Fontosabb szöveges függvények 3.
REPLACE(szöveg, ezt [, erre]): a szövegben ezt minden előfordulását erre cseréli RPAD(szöveg, hossz [, kitöltő]): a szöveget hossz hosszúságúra alakítja úgy, hogy a jobb végére a kitöltő szöveget fűzi a kellő számban (default: a kitöltő egy szóköz) RTRIM (szöveg [, karakterek]): a szöveg bal végéről eltávolítja a felsorolt karakterek mindegyikét (default: a karakterek egy szóköz)
24
Fontosabb szöveges függvények 4.
SUBSTR(szöveg, kezdőhely [, hossz]): a szövegből a kezdőhely pozíciótól kezdve hossz darab karakter TRIM([karakter FROM ] szöveg): a szöveg mindkét végéről eltávolítja a megadott karakter akárhány előfordulását (default: a karakter egy szóköz) UPPER (szöveg): a szöveget teljesen nagybetűsség alakítja
25
Példa A cikkek neve a név hossza szerint csökkenő sorrendben: SELECT cikknev FROM cikk ORDER BY LENGTH(cikknev) DESC;
26
Logikai értékek kezelése
27
Logikai konstansok TRUE FALSE UNKNOWN (NULL)
Logikai adattípust nem lehet táblában tárolni!
28
Logikai operátorok
29
A háromértékű logika - NOT
X NOT X TRUE FALSE UNKNOWN
30
A háromértékű logika - AND
TRUE FALSE UNKNOWN
31
A háromértékű logika - OR
TRUE FALSE UNKNOWN
32
Hasonlító operátorok Szöveges és dátum típusú adatokra is!
33
LIKE Karakterlánc hasonlítása egy mintához
Helyettesítő karakterek a mintában: %: tetszőleges számú tetszőleges karakter _: pontosan egy tetszőleges karakter Példa: ‘egyetem’ LIKE ‘_gy%m’ értéke TRUE ‘gyermek’ LIKE ‘_gy%m’ értéke FALSE ‘gyermek’ LIKE ‘%gy%m%’ értéke TRUE Tagadása: NOT LIKE
34
BETWEEN Alsó és felső határ közé esés vizsgálata
x BETWEEN a AND b jelentése: x >= a AND x <= b Szöveges és dátum típusú adatokra is Tagadása: x NOT BETWEEN a AND b
35
IN Egy halmazban való előfordulás vizsgálata
x IN (3, 5, 7, 11, 13) jelentése: x=3 OR x=5 OR x=7 OR x=11 OR x=13 Szöveges és dátum típusú adatokra is Tagadása: x NOT IN (3, 5, 7, 11, 13) A vizsgált halmaz elemeinek tételes felsorolása helyett egy SELECT utasítás is állhat, pl. nev IN (SELECT nev1 FROM vevok)
36
IS NULL Annak vizsgálatára, hogy egy kifejezés értéke NULL-e
x IS NULL igaz, ha x értéke NULL, hamis egyébként x IS NOT NULL igaz, ha x értéke nem NULL, hamis egyébként
37
Feltételes kifejezés (CASE) 1.
Kétféle alakja van A választó CASE: CASE megvizsgálandó_kifejezés WHEN kifejezés_1 THEN érték_1 [WHEN kifejezés_2 THEN érték_2 …] [ELSE érték_egyébként] END Értéke az első olyan érték_i, amelyre megvizsgálandó_kifejezés = kifejezés_i emiatt a NULL érték vizsgálatára nem alkalmas
38
Feltételes kifejezés (CASE) 2.
A feltételes CASE: CASE WHEN feltétel_1 THEN érték_1 [WHEN feltétel_2 THEN érték_2 …] [ELSE érték_egyébként] END Értéke az első olyan érték_i, amelyre feltétel_i igaz
39
Példa feltételes CASE kifejezésre
SELECT cikk, CASE WHEN 'helyseg' IS NULL THEN 'Pécs' ELSE 'BP' END FROM egyes;
40
Konverziós függények
41
A konverziós függvények
ASCIISTR BIN_TO_NUM CAST CHARTOROWID COMPOSE CONVERT DECOMPOSE HEXTORAW NUMTODSINTERVAL NUMTOYMINTERVAL RAWTOHEX RAWTONHEX ROWIDTOCHAR ROWIDTONCHAR TO_CHAR TO_CLOB TO_DATE TO_DSINTERVAL TO_LOB TO_MULTI_BYTE TO_NCHAR TO_NCLOB TO_NUMBER TO_SINGLE_BYTE TO_YMINTERVAL TRANSLATE ... USING UNISTR
42
Típuskonverzió Van automatikus típuskonverzió: SELECT cikknev, egysegar || ‘ Ft’ FROM cikk; Általában nem ajánlott, mert az adatbázis egyes beállításai befolyásolják az eredményt A leggyakoribb explicit konverziós függvények: TO_DATE: szövegből dátum TO_NUMBER: szövegből szám TO_CHAR: dátumból szöveg, számból szöveg overloading
43
TO_DATE Leggyakrabban használt alakja: TO_DATE(szöveg[, formátum])
szöveg: a dátummá alakítandó szöveg formátum: a szövegben szereplő dátum formátuma Példák: TO_DATE(‘ ’, ‘yyyy.mm.dd.’) TO_DATE(‘ :45’, ‘yyyy.mm.dd. hh24:mi’) négyjegyű évszám, hónap, nap 24 órás óra-formátum, perc
44
TO_NUMBER Leggyakrabban használt alakja: TO_NUMBER(szöveg[, formátum])
szöveg: a számmá alakítandó szöveg formátum: a szövegben szereplő szám formátuma Példák: TO_NUMBER(‘-3.14’) TO_NUMBER(‘ ’, ‘99G999D99’) ezresenkénti elválasztójel tizedesjel
45
a pillanatnyi idő másodperc pontossággal (kétjegyű évszám)
TO_CHAR Leggyakrabban használt alakja: TO_CHAR(dátum[, formátum]) TO_CHAR(szám[, formátum]) dátum: a szöveggé alakítandó dátum szám: a szöveggé alakítandó szám formátum: a dátum vagy szám formátuma Példák: TO_CHAR(SYSDATE, ‘yy.mm.dd. hh24:mi:ss’) TO_CHAR(15) a pillanatnyi idő másodperc pontossággal (kétjegyű évszám)
46
Egyéb egyszerű (single line) függvények
47
Az egyéb egyszerű függvények
BFILENAME COALESCE DECODE DEPTH DUMP EMPTY_BLOB EMPTY_CLOB EXISTSNODE EXTRACT EXTRACTVALUE GREATEST LEAST NLS_CHARSET_DECL_LEN NLS_CHARSET_ID NLS_CHARSET_NAME NULLIF NVL NVL2 PATH SYS_CONNECT_BY_PATH SYS_CONTEXT SYS_DBURIGEN SYS_EXTRACT_UTC SYS_GUID SYS_TYPEID SYS_XMLAGG SYS_XMLGEN UID UPDATEXML USER USERENV VSIZE XMLAGG XMLCOLATTVAL XMLCONCAT XMLFOREST XMLSEQUENCE XMLTRANSFORM
48
A USER függvény Az aktuális felhasználó login-neve (csupa nagybetű!)
Példa: SELECT USER FROM dual;
49
A NVL (null value) függvény
Ha az első argumentum nem NULL, őt magát adja vissza Ha az első argumentum NULL, a második argumentum értékét adja vissza
50
DECODE DECODE(kifejezés, keres1, érték1 [keres2, érték2, …] [, érték_egyébként]): ha a kifejezés értéke keres1, akkor érték1-et adja, ha keres2, akkor érték2-t, stb. Ha egyikkel sem egyezik, akkor az érték_egyébként lesz az értéke, pl. DECODE(elojel, ‘+’, ‘plusz’, ‘-’, ‘mínusz’, ‘nincs ilyen előjel’)
51
A SYS_CONTEXT függvény
Környezeti beállítások (kb. 35 féle) lekérdezése, pl. SYS_CONTEXT(‘USERENV’, ‘DB_NAME’): a használt adatbázis neve SYS_CONTEXT(‘USERENV’, ‘HOST’): a használt munkaállomás neve SYS_CONTEXT(‘USERENV’, ‘OS_USER’): a felhasználó login neve az operációs rendszerben USERENV: régi megoldás a SYS_CONTEXT helyett
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.