sql-kniha

48
Luboslav Lacko f pe sní prehled tj oi ' ~ ft ~ ~ 1 F-í1wzy,funkce, da tové ty py, operátory V // Ínl1typF-íkazu SELEC T fljYklndy pro SQL Server, O ac1e, MySQL I odle standardu SQL 99 II Luboslav Lacko [ ap.esní .prehled  J t3=i •  i ~i .. @ ~ ~ ~=Il. II ~ . ~.= • -II 1í { : ;11 -II ~== • I I 117 8 8 025 1078 81 89 Kc 12 9 Sk doporuc en á cena ISBN 80- 251 ·0788-4 PRODEJ NI KÓD K1145 acále cník pokrocilý odborník užlvalel manažer administrátor programátor C om pu te r Press a.s. nám. 28. dubna 48 635 00 Brno Ob jednávejte na: http://knihy.cpress.cz [email protected] Bez platná telefo nní linka: 800 555 513 Zarazení pub lik ace : I dyž sev jazyce SQL sami radíte mezi zkušenejší admini st rátory ciprogramá tory, pravde podobne ani vy nenote v hlave všechny príkazy, funkce a jejich pa rametry. Nechcete-li se pr i ps aní kódu v SQL zdržovat vyhledáváním potrebného príkazu a jeho syntaxe v on-line zdrojích ne bo v tlustých knihách, využijete jiste tuto malou prírucku. S QL Ka pe s ní p re hl ed strucne a prehledne popisuje všechny príkazy jazyka pro definici dat DDL), jazyka pro manipulaci s daty DML) a funkce standa rdního jazyka SQL. Po strucném nástinu každé ka te gor ie ji ž následují dotycné položky príka zy, funkc e atd.), dop rov áze né krátkými vysvetlením, zápisem obecné syntaxe, a je-li potreba, i jednodu chým prí kladem. Nec hybí strucné shrnutí pri ncipu rel acn ích dat abá zí, osve tle str uktu ry jazyka SQL, pr ehled datových typu a operátoru. Protože imple menta ce nekterých príkaz u azejména funkcí se v produkte ch ruznýc h výrobcu li ší,jevždyupozorneno nakon kré tní odlišnosti v Microsoft SQL Se rve ru, Or aele a MySQL a príkla dy jsou pak uvádeny pr o každý z nich.

Upload: john-howard

Post on 11-Oct-2015

20 views

Category:

Documents


3 download

DESCRIPTION

databazova kniha

TRANSCRIPT

  • 5/21/2018 SQL-kniha

    1/49

    Luboslav Lacko

    f pesn prehled

    tj

    oi

    '

    ~

    ft

    ~

    ~

    1 F-1wzy,funkce, datov typy, opertory

    V // nl1typF-kazu SELECT

    fljYklndy pro SQL Server, Orac1e, MySQL

    I odle standardu SQL 99

    II

    Luboslav Lacko

    [ ap.esn

    .prehled

    J

    t3=i

    i

    ~i

    ~

    ..

    @

    ~

    ~

    ~=Il.

    II

    ~ .

    ~.=

    -II

    1{;: ;11

    -II

    I I

    117

    8 8025 1078 8 1

    89 Kc

    129 Sk

    doporucen cena

    ISBN 80-2510788-4

    PRODEJNI KD K1145

    acle cnk pokrocil odbornk

    ulvalel

    manaer

    administrtor

    programtor

    Computer Press a.s.

    n m. 28. dub na 48

    635 00 Brno

    Objednvejte na:

    http://knihy.cpress.cz

    [email protected]

    Bezplatn telefonn linka: 800 555 513

    Zarazen publikace:

    Idy se v jazyce SQL sami radte mezi zkuenej administrtory

    ci programtory, pravdepodobne ani vy nenoste v hlave vechny

    prkazy, funkce a jejich parametry. Nechcete-li se pri psan kdu

    v SQL zdrovat vyhledvnm potrebnho prkazu a jeho syntaxe

    v on-line zdrojch nebo v tlustch knihch, vyuijete jiste tuto malou

    prrucku.

    SQL Kapesn prehled

    strucne a prehledne popisuje vechny prkazy

    jazyka pro definic i dat DDL), jazyka pro manipulaci s daty DML)

    a funkce standardnho jazyka SQL. Po strucnm nstinu kad kate

    gorie ji nsleduj dotycn poloky prkazy, funkce atd.), doprovze

    n krtkmi vysvetlenm, zpisem obecn syntaxe, a je- li potreba,

    i jednoduchm prkladem.

    Nechyb strucn shrnut principu relacnch databz, osvetlen struktury

    jazyka SQL, prehled datovch typu a opertoru. Protoe implementace

    nekterch prkazu a zejmna funkc se v produktech ruznch vrobcu

    li,je vdy upozorneno na konkrtn odlinosti v Microsoft SQL Serve

    ru, Oraele a MySQL a prklady jsou pak uvdeny pro kad z nich.

  • 5/21/2018 SQL-kniha

    2/49

  • 5/21/2018 SQL-kniha

    3/49

    SQl

    Kapesn prehled

    Luboslav Lacko

    Copyright

    CP Books, a.s. 2005. Vydn pIVn.Vechna pr;v:1

    Vylll:1

    zena. Vydalo nakladatelstv CP Books, a.s. jako svou 1935. pulllik:I i.

    Vydavatelstv a nakladatelstv CP Books, a.s.,

    nm. 28. dubna 48, 635 00 Brno, knihy.cpress.cz

    ISBN 80-251-0788-4

    Prodejn kd: K1145

    Odborn korektura:

    Karel Hudan, Rostislav Okc

    Jazykov korektura: Petra Lnckov

    Vnitrn prava a sazba:

    Petr Klma

    Oblka:

    Martin Sodomka

    Komentr na zadn strane oblky:

    Jindrich Jonk

    Tecluuck spoluprce:

    Tom Zeiner, Pavel Kynick

    Odpovedn redaktor:

    Jindrich Jonk

    Tecluuck redaktor:

    Jir Matouek

    Produkce: Petr Bal

    dn cst tto publikace nesm bt publikovna a rena

    :I~idllIl1

    zpusobem a v dn podobe bez vslovnho svolen vydavat :k.

    CP Books a.s. nm. 28. dubna 48, 635 00 Brno

    tel.: 546 122 111, fax: 546 122 112

    Objednvejte na: knihy.cpress.cz [email protected]:i.

    Bezplatn telefonn linka:

    800 555 513

    Dotazy k vydavatelsk cinnosti smerujte na: [email protected]:r.

    ~~~

    www.knih.V.cpross.cz

    online obchOd

    Novinky k dispozici ve dni vydn, slev y, recenze,

    zajm:lv programy pro I i I 1I1Y koncov z:k:iznky.

    3

    3

    ~

    3

    ~~

    ~ ~

    ~~

    ~~~.3

    ~.3

    3

    I

    3

    I

    3

    li

    ~

    li

    Ii

    ~

    ~

    Obsah

    VOD

    Zklady relacnch databz

    Databze a systm rzen bze dat

    Datov typy

    Hodnota NULL

    Preddefinovan datov typy

    Konstruovan datov typy

    Uivatelem definovan datov typy

    Datov typ INTERVAL

    Objekty v databzi

    Databzov tabulky

    POhledy

    Indexy

    Zkladn orientace

    ve strukture jazyka 50L

    Data Definition Language DDL

    cesky Jazyk pro definici dat JDD

    9

    13

    13

    15

    15

    16

    22

    22

    23

    25

    26

    26

    29

    29

    3

  • 5/21/2018 SQL-kniha

    4/49

    1=: n;

    I ;

    Obsahiah

    opertory

    0

    :i

    555

    Aritmetick opertory

    55;5

    0

    i

    ~

    Porovnvac opertory

    56;6

    li

    Logick opertory

    58;8

    0

    riorita opertoru

    58 8

    li

    ~

    Funkce

    5919

    1

    i

    ~

    ABS

    60 0

    2

    ~

    ACOS

    60 0

    4

    ;3

    ADD_MONTHS

    60 0

    7

    I

    ASIN

    60 0

    8

    TAN

    61 1

    8

    -

    :~

    AVG

    61 1

    8

    IT_TO_NUM

    61 51

    ~

    CAST

    62 2

    9

    li

    ;;

    CEILlNG

    62 2

    9

    CONVERT

    62 2

    9

    cos

    63 3

    1

    COUNT

    63 3

    4

    If

    CURDATE

    63 3

    4

    CURRENT_DATE

    6454

    I :

    CURRENT_TIMESTAMP

    6454

    5

    CURTIME

    6454

    9

    DATE_ADD

    6555

    1

    i

    ~

    DATEJORMAT

    6555

    2

    DATE_SUB

    6656

    3

    ii

    ;I

    DATEADD

    6757

    4

    DATEDIFF

    6757

    ~

    DATENAME

    6858

    ~

    5 5

  • 5/21/2018 SQL-kniha

    5/49

    ~

    I .

    Obsah

    68

    IE ~

    MONTHS_BETWEEN

    77

    8

    NEXT_DAY

    78

    9

    E

    i

    NOW 78

    9

    POWER

    789

    ~.

    QUARTER

    78

    9

    EPLACE

    79

    ii

    RIGHT

    79

    F

    ROUND

    79

    ROUND

    8

    1

    RPAD 8

    2

    RTRIM

    81

    2

    ~

    SEC_TO_TIME

    82

    2

    SECOND

    82

    2

    i

    SESSOINTIMEZONE

    82

    3

    j i ;;;J

    SIGN

    823

    SIN

    83

    3

    3

    STDEV

    83

    4

    UBSTRING

    83

    4

    E

    3

    SUM

    83

    4

    E

    3

    SYSDATE

    84

    4

    SYSDATE

    84

    5

    E

    3

    SYSTIMESTAMP

    84

    5

    TAN

    85

    5

    F

    iji

    TIME_STAMP

    85

    5

    TIME_TO_SEC

    856

    I~

    TO_DATE

    85

    6

    li

    ,i

    TO_DAYS

    876

    TO_CHAR

    88

    7

    Ji

    i

    TO_ LOB

    89

    ~

    ;I

    7

  • 5/21/2018 SQL-kniha

    6/49

    Obsah

    TO_NUMBER

    TRUNC

    UPPER

    VAR

    WEEK

    WEEKDAY

    YEAR

    YEAR

    YEARWEEK

    Prloha C.1:

    Seznam rezervovanch slov SQL2003

    Prloha 2:

    Tabulky pro ukzkov prklady

    8

    90

    90

    90

    9

    9

    9

    9

    9

    93

    95

    ~.- ;:1

    . 3

    .~l.: iJ~~ j~

    ~

    Iii

    1;1

    ;;; I

    =:

    ~

    i; 1;1

    13

    13

    13

    13

    ~i

    ;;i

    i iil

    ~

    VOD

    Teorie databzovch systmu v takov podobe, v jak ji znme

    dnes, byla definovna a v sedmdestch letech minulho sto

    let. daje jsou v databzch uloen nezvisle na aplikacnm

    programu. Databze tak obsahuj nejen vlastn daje, ale

    i relacn vazby mezi jednotlivmi prvky a objekty databze.

    Obsahuj tak popisy pouitch struktur a mechanismy pro

    zarucen integrity dat. Komunikace mezi klientskmi aplikacemi

    a databzovm serverem se uskutecnuje pomoc jazyka SQL.

    Histor ie tohoto jazyka zacn v roce 1974 v nvaznosti na prvn

    prce Dr. Codda o relacnch databzovch modelech. Nejprve

    se jednalo jen o vahy v teoretick rovinne. Prvn skutecne pou

    itelnou verzi databzovho jazyka vytvorila firma IBM a pojme

    novali ji SEQUEL Structured English Query Language). Pozde

    ji byla prijata vylepen a standardy jazyka SQL byly upravov

    ny a dnes jsou znmy jako SQL-86 a SQL-92. Pro SQL-92 se vil

    zkrcen nzev SQL-2. Vvoj pokracoval verz SQL 1999, kter

    bv oznacovan i jako SQL-3, a nejnovej je SQL 2003. Imple

    mentace jazyka SQL by se mely r dit mezinrodnmi normami

    ISO/IEC ]TC l/SC 32/WG 3 lnternational Organization for Stan

    dardization), ISO/IEC 9075 a ANSI TC NCITS H2 American

    National Standards Institute).

    Pri nvrhu osnovy tto publikace se rozhodovalo, zda sestavit

    porad probranch tmat a prkazu podle nekter z norem,

    nebo pout prirozenou logickou strukturu jazyka SQL. Nako

    nec zvtezila druh monost, protoe je jednoznacne prehled

    nej a lpe uchopiteln. Hlavn vznam normy je hlavne ve

    vycerpvajc a vechny detaily pokrvajc presnosti a plnosti,

    take se predpokld, e takovto uspordan budou vyuvat

    spe implementtori ne uivatel. Asi nejpresnej metoda, jak

    vyjdril syntaktick pravidla jazyka SQL, je pomoc syntaktic-

    9

  • 5/21/2018 SQL-kniha

    7/49

    vod

    u

    jednordkovch funkc budeme kvuli spore msta v publi

    kaci uvdet vsledek v hranatch zvorkch v tom stejnm

    rdku jako prkaz SQL. Naprklad;

    id_po-

    i d_prac

    jmeno

    funkce

    astoupi 1

    zda

    ocky

    ~- - - - - - - - - - - - - - - - - - - -

    ------------ ----------- ---------

    Novak Martin

    gener a 1 d i r ec to r

    981-01-160000.000

    Kern ova Jana

    marketin9 manager

    984-07-132000.000

    Kouma1 Petr

    deve 1oper

    992-09-015000.000

    Zoubkova Mirosl ava

    secretary

    989-02-286000.00

    0

    Ti cha Jana

    secretary

    989-06-28

    8000.000

    [10]

    Pokud zadme vkonn prkaz, naprklad pro vytvoren tabul

    ky nebo vloen zznamu, prkaz se bud vykon a databzov

    server nm tuto skutecnost potvrd, nebo dojde k chybe a v tom

    prpade databzov server vygeneruje patricn chybov hle

    n. Pro takovto prpady jsme zavedli znacen

    mm.

    SELECT ABS -lO FROM test:

    Zjednoduen definice syntaxe.

    Jeliko je SQL dotazovac jazyk, je v publikaci zavedeno tak

    toto znacen:

    Prkaz nebo dvka prkazu SQL zadvan do databzovho ser

    veru.

    Mnoina vstupnch daju, kterou vygeneroval databzov ser

    ver na zklade dotazu SQL.

    SELECT FROM pracovnici;

    ~3

    3

    3

    ~3

    3

    ~

    ;ii

    ~

    ~

    ~

    ~

    ~

    ~iYNTAXE

    :;

    ;;

    ~::~

    1nm

    :;

    Ii1ii m

    ;~

    C

    a;

    ~

    E

    I

    F

    F

    ~

    F

    F

    ~

    ~

    ~

    F

    a;

    S;

    ~

    kch diagramu. Syntaktick diagramy pro jazyk SQL jsc I

    I

    pomerne sloit a pro jejich pochopen je potrebn urcit stu

    pen matematick abstrakce. Proto jsme ze syntaktickch diagra

    mu jazyka SQL, kter by samy o sobe zabraly celou publikaci

    podobnho rozsahu, vybrali jen urcit s tate.

    Jednm ze zvanch problmu je i urcit nekompatibilita

    v oblasti implementace jazyka SQL pro jednotliv databzov

    platformy. Na rovni zkladnch prkazu SQL jsou vechny plat

    formy prakticky kompatibiln, ale kad z nich m urcit speci

    fick rysy, naprklad co se tk implementace nativnch dato

    vch typu, rozirujc mnoiny prkazu a klcovch slov. Eozd

    ly jsou i v syntaktick implementaci parametru klcovch slov.

    Kapitolou samou pro sebe z hlediska kompatibility je potom

    nrodn lokalizace, hlavne nrodn interpretace data a casu.

    S touto nekompatibilitou se ctenr setk zrejme nejdrve a nej

    casteji.

    Proto je v tto publikaci zavedeno znacen kompatibility, kter

    ukazuje, pro kter nejpouvanej databzov platformy je pr

    s lun syntaxe prkazu urcen. Aby nemerne nevzrostl pocet

    kombinac, vyplvajc u zkladnch prkazu z drobnch rozdl

    li

    jazyka SQL mezi databzemi, zamerme se vetinou na tri nej

    pouvanej platformy.

    ORACLE Oznacen pokrv databzi Oracle ve verzch 7, H,

    Si, 9i

    a

    lOg.

    sQL Server

    Oznacen pokrv databzi MSSQL Server ve verzch

    7.0, 2000

    a

    2005.

    MySQL

    Oznacen pokrv vechny verze MySQL.

    Publikace je i presto vhodn pro uivatele databzovch syst

    mu IBM DB2 Universal Database, Microsoft Access, PostgreSQL,

    Sybase Adaptive Server a dalch.

    vod

  • 5/21/2018 SQL-kniha

    8/49

    ~~~

    ~~

    ~~~

    J;~

    F'

    F ;.ii

    ;. i

    ~- ~

    ; 1

    J;~-

    Ji ~

    II ~i

    E i3

    E i3

    E ~3

    ~ 3

    Ifi ~

    t:i ~

    ~ ~~

    zklady relacnch

    databz

    Zklady teorie relacnch databz formuloval Dr. Codd. Asi nej

    vstineji jsou vyjdreny v jeho trech podmnkch minimlnho

    relacnho modelu .

    1. Vechny daje v databzi jsou uloeny v tabulkch.

    2. Fyzick struktura daju a jejich uloen jsou nezvisl

    a pro uivatele naprosto odstnen. To znamen, e

    z hlediska uivatele neexistuj dn viditeln prstupov

    cesty vcetne prstupu k indexum).

    3. Pro prci s daji v databzi predpokldme existenci

    databzovho jazyka, kter umonuje realizovat mini

    mlne operace vberu, omezen, projekce a spojen.

    Databze a systm rzen bze dat

    Databzi chpeme jako loite daju, kter jsou uloeny

    a zpracovvny nezvisle na aplikacnch programech. Pod

    pojmem systm rzen bze dat SRBD), nebo anglicky Database

    Management System DBMS), rozumme specializovan serve

    rov software pro prstup k dajum v databzi. Uivatel ani apli

    kacn program pritom vubec nemus znt fyzickou strukturu

    uloench daju, protoe k dajum v databzi pristupuj pro

    strednictvm systmu rzen bze dat. Komunikace klienta nebo

    aplikacnho programu se SRBD probh pomoc jazyka SQL.

    3

  • 5/21/2018 SQL-kniha

    9/49

    15

    Hodnota NULL

    V prvnm rdku tabulky je vraz a v druhm vsledek, kter m

    vdy hodnotu NULL.

    --- -------------

    --- - ... -- - --- - - - - - - -- ----- - ---- --- - -- -

    I ~ NULL I NULL I < NULL I > NULL I NULL ~ NULL I

    --

    NULL

    I

    NULL

    I

    NULL

    I

    NULL

    I

    NULL

    I

    - - - - - - - - - - - - - - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --

    Drve, ne se zacneme venovat jednotlivm datovm typum,

    povaujeme za duleit predstavit si hodnotu NULL,kter je do

    jist mry spolecn vem datovm typum. Tato hodnota vlastne

    vyjadruje neexistenci hodnoty promenn. Je ale treba prsne

    rozeznvat mezi nulovou hodnotou promenn nebo przdnm

    retezcem a hodnotou NULL. Nula je v podstate konkrtn cs lo,

    ale hodnota NULLznamen, e tento daj nebyl zadn, a tedy

    jej neznme. Jak vypad porovnn s hodnotou NULL, je videt

    v tabulce, kterou jsme zskali prkazem:

    SELECT ~~ NULL

    NULL

    NULL NULL ~~ NULL;

    Kad daj v databzi je urcitho datovho typu. V databzo

    vch tabulkch jsou daje uspordny tak, e kad sloupec

    obsahuje daje stejnho datovho typu. Mue to bt textov

    retezec, cslo, datum, cas a podobne. Jazyk SQL podporuje tri

    zkladn druhy typu:

    preddefinovan datov typy

    konstruovan datov typy

    uivatelem definovan datov typy

    Datov typy

    F L;f

    .

    ~.~

    i3~iIJ; :. 1Ji ;: 1t:

    ~ ia

    F

    I' :;

    ~, :;

    F r:~

    I- 3

    ~ 3

    ~

    3

    r 3

    ~ i

    ~ i l

    ~ Iii

    t

    i i

  • 5/21/2018 SQL-kniha

    10/49

    Hodnota NULL

    (Pozn. korektora: Chovn NULL NULLlze v nekterch data

    bzovch systmech vypnout, ale nepatr to mezi dobr npady.)

    Preddefinovan datov typy

    v

    jazyku SQL jsou preddefinovan nsledujc datov typy:

    CHARACTER. CHARACTER VARYING, CHARACTER LARGE OBJECT,

    BINARY LARGE OBJECT, NUMERIC, DECIMAL,SMALLINT, INTEGER,

    BIGINT, FLOAT, REAL, DOUBLE PRECISION, BOOLEAN, DATE,

    TlME,TIMESTAMP, INTERVAL.

    Znakov datov typy

    Datov typy z tto skupiny slou pro ukldn prevne texto

    vch daju. Mohou obsahovat daje skldajc se z alfanumeric

    kch znaku. Tedy psmen, cslic a jinch znaku. Patr sem dalo

    v typy: CHARACTER, CHARACTERVARYING a CHARACTEI{

    LARGE OB]ECT.

    CHARACTER(dlka) - tento datov typ slou pro uloen lex

    tovho retezce s pevnou dlkou, kter je dan parametrcm

    v zvorce. Pri implementaci se casto pouv zkratka CHAR.

    CHARACTER VARYlNG(dlka) - tento datov typ slou pro

    uloen textovho retezce s promennou dlkou. Maximln

    dlka textovho retezce je dan parametrem v zvorce. Pri

    implementaci se casto pouv zkratka VARCHAR.

    NCHAR(dlka) - tento datov typ slou pro uloen textovho

    retezce s pevnou dlkou, kter je dan parametrem v zvorce,

    ve vybran nrodn znakov sade.

    NVARCHAR(dlka) - tento datov typ slou pro uloen texto

    vho retezce ve vybran nrodn znakov sade s promennou

    dlkou, kter je dan parametrem v zvorce.

    Cseln datov typy

    Datov typy v tto skupine slou k ukldn cselnch daji I , at

    u celch csel, csel s pevnou desetinnou crkou (pouvaj se

    a;= ~

    I \

    I-I ~

    ~l~

    (

    1ir:3

    (

    ~ ~

    I

    ~~

    I

    f- ~

    ~ r ~

    -= L. 3

    II:

    (

    F ~

    i

    IF:[ ;S

    I

    ~ ii

    I

    3

    \

    I 3

    (

    ~ 3

    (

    3

    (

    ti ~

    I

    t: ~

    I

    ~ ~

    (

    ~ 3

    Kapi tola 2 - Datov typy

    naprklad pro ukldn f inancnch cstek, kter se uvd na dve

    desetinn msta) nebo desetinnch csel pouvanch pro

    vedecko-technick vpocty. Vzhledem k povaze cselnch dato

    vch typu se nabdka navc rozdeluje na presn a aproximova

    n cseln datov typy. Do skupiny presnch datovch typu

    meme zaradit NUMERIC, DEClMAL, SMALLINT, INTEGER

    a BIGINT. Tyto typy vyjadruj presnou hodnotu, a proto je

    meme porovnvat s konkrtn hodnotou.

    INT (integer) cel cslo v rozsahu od _231 ( -2 147 483 648) do

    231 -1 (2 147 483 647). Tento datov typ zabr 4 bajty

    SMALLINT cel cslo v rozsahu od _215 (-32 768) do 215 -1

    C32767). Tento datov typ zabr 2 bajty.

    DECIMAL cseln hodnota s pevnou desetinnou crkou, jej

    rozsah je pritom od -(10)38 -1 do 1038 -1.

    Do skupiny presnch cselnch datovch typu patr i datov

    typy pro vyjdren financn cstky v penen mene. Financn

    cstky se vyjadruj a poctaj s pevnm poctem desetinnch mst,

    vetinou na dve nebo na ctyri desetinn msta.

    MONEY - rozsah tohoto datovho typu je od -263 do 263 -1

    SMALIMONEY - rozsah je od -214 748,3648 do +214 748,3647

    Pokud databzov platforma tento typ nepodporuje, mueme

    ho nahradit jinm datovm typem, naprklad NUMBER(14,2).

    Vzhledem k bitov a bajtov implementaci cselnch hodnot

    pro uloen na pametovch mdich byly v nekterch datab

    zovch platformch zaveden i datov typy optimalizovan pro

    uloen do jednoho bajtu, prpadne do jedinho bitu .

    TlNYlNT cel cslo v rozsahu od

    O

    do 255. Datov typ TINYINT

    zabr jeden bajt.

    7

  • 5/21/2018 SQL-kniha

    11/49

    Preddefinovan datov typy

    BIT

    tento datov typ slou pro vyjdren jen dvou hodnot, ()

    nebo 1, nebo jinak receno pro vyjdren logick hodnoty

    PRAVDA / NEPRAVDA (TRUE / FALSE).

    (Polo. korektora: I kdy to vypad, e BIT zabr jen jeden IJil.

    nebv tomu tak. Obvykle v databzi zabr jeden bajt.)

    ORACLE

    Platforma Oraele pouv jedin nativn numerick datov IYJ>

    NUMBER(n_cslic, n_cslic_za_desetinnou_crkou), kter sl, IIlIJ

    k ukldn cselnch daju. Ukldaj se do nej cel csla, (,.~I:1

    s pevnou desetinnou crkou (vyuv se naprklad u 111

  • 5/21/2018 SQL-kniha

    12/49

    Vloen aktulnho data a casu:

    Preddefinovan datov typy

    Ukeme si to na jednoduchm prkladu:

    5 01 Server

    21

    Kapitola

    2 -

    Datov typy

    MySQL.

    Datov typy DATE, TIME a TIMESTAMP se skldaj z jednotli

    vch pol. Vsledn hodnota data a casu nebo casovho inter

    valu je kombinac pol:

    YEAR. MONTH. DAY. MINUTE, SECOND.

    TIMEZONE_HOUR. TIMEZONE_MINUTE

    DAT_NAR JMENO

    Norma ISO/IEC 9075 definuje datov typy:

    DATE, TIME a TIMESTAMP, kter obsahuj pole:

    ORACLE'

    01.05.01 Jan Novak

    26.05.01 NOVOROZENEC

    I dat_nar I jmeno

    +- -- -- - - -- - --- - -- - --- -+--- -- ---- ----+

    I 0000-00-00 00:00:00 I Jan Novak I

    I 2004-10-13 23:46:21 I NOVOROZENEC I

    +--- - - - --- - -- - - -- - - - - -+- - - -- -- - --- --+

    CREATE TABLE datova_db dat_nar datetime, jmeno varchar 25:

    INSERT INTO datova_db VALUES 05/0l/2001 13:30:22 . Jan Novak );

    INSERT INTO datova~db VALUES CURRENT_TlMESTAMP ). NOVOROZENEC );

    SELECT * FROM datova_db;

    CREATE TABLE datumova_db dat_nar date. jmeno varchar 25;

    INSERT INTO datumova_db

    VALUES TO_DATE 01.05.2001 13:30:22 . dd.mm.YYYY, HH24:MI:SS ).

    . Jan Novak );

    INSERT INTO datumova_db

    VALUES SYSDATE, NOVOROZENEC );

    SElECT * FROM datumova~db;

    11= -~~

    -I (

    I-~

    I (

    _I:

    ;ii

    11IE

    _I

    I (

    a;::::1 : ;i

    I m:mm

    a; I

    I

    I

    I

    -I

    ;i

    . ~

    -I

    I (

    I= :-I~

    I

    I (

    R,:;i

    F ~

    I (

    'I ~

    I

    II -l

    (

    ~-3

    \

    i~

    (

    ~:~

    (

    a;;~

    I

    I (

    J1iI

    ) I (

    ~ 3

    DATETlME

    DATETlME

    DATE

    CURRENT_TIMESTAMPC)

    GETDATEC)

    SYSDATE

    Jan Novak

    NOVOROZENEC

    jmeno

    20

    dat na r

    2001-05-01 13:30:22.000

    2002-11-24 10:05:05.767

    CREATE TABLE datova_db Cdat_nar datetime. jmeno varchar 25:

    INSERT INTO datova_db VALUES

    05/01/200113:30:22 ,

    Jan Novak ):

    INSERT INTO datova_db VALUES GETDATEC), NOVOROZENEC ):

    SELECT * FROM datova_db:

    MySQl

    MicrosoftSQl Server 2000

    Oracle8i

    MySQl

    MicrosoftSQl Server 2000

    Oracle8i

    Vloen zadanho data a casu:

    MySQl 28.03.2001 13:30:22

    Microsoft S QlServer 2000 03.28.2001 13:30:22

    Oracle8i TO_DATEC 01.05.2001 13:30:22 ,

    dd.mm.YYYY, HH24:MI:SS

    ORACLE'

    S'QL

    Server

    MySQL

    Abychom hlavne zactecnkum ulehcili zkladn orientaci,

    prl.:d

    vedeme rozdly v implementacch tohoto datovho typu

    pl'

  • 5/21/2018 SQL-kniha

    13/49

    22

    Preddefinovan datov typy

    mesto VARCHAR(25).

    stat VARCHAR(20)

    ) :

    23

    Kapitola 2 - Datov typy

    SQL Server

    Pro definovn vlastnho datovho typu se pouv systmov

    uloen procedura SP_ADDTYPE.

    USE master

    [XEC sp_addtype pse. CHAR(6) . NOT NULL

    Datov typ INTERVAL

    Datov typ INTERVALmeme pout pro hodnoty z urcitho,

    presne definovanho intervalu.

    r~ ;J

    1- I

    J~

    I I

    ~-~

    I I

    I

    ii J

    \ (

    i

    ~=I

    1-

    I: .

    I

    I =- :

    (

    t~

    ;:;i

    I j I

    =J~~

    I 1 I

    10 ::..1. ~1- .

    1-1 (

    J': :I~

    1

    .~.

    \

    t ;~

    .

    I (

    ~-I ~

    . ~

    J. ~

    . ~

    I= ~

    I: ~

    J

    YEAR. MONTH a DAY.

    HOUR. MINUTE a SECOND.

    YEAR. MONTH. DAY. HOUR. MINUTE a SECOND.

    Uivatelem definovan datov typy

    Krome preddefinovanch datovch typu je tak mon vytvorit

    i vlastn, tzv. uivatelem definovan datov typy. Poadavky n:1

    pouvn techto datovch typu vyplvaj z aplikacn logiky.

    Velmi casto se pouvaj nekter hodnoty z relnho ivota,

    naprklad potovn smerovac csla, rodn csla a podobn0,

    take je vhodn definovat pro ne vlastn datov typ.

    ORACLE

    U tto platformy mueme vytvret tri druhy datovch typ: po

  • 5/21/2018 SQL-kniha

    14/49

    1 -:=I

    -~

    I' X'

    I

    t:-=~

    I

    ~ii

    ~~

    r

    ~~~

    I

    -1

    .J~

    J~

    -I I

    1= :1 ;; I

    - I

    -=:

    ;;

    .~

    -, I

    :'

    ~

    .-7/3

    I

    -: 3

    \

    I~

    3

    I

    It-

    I~

    ~

    I

    I\.

    .~~3

    Objekty

    v databzi

    Databze je strukturovan loite daju s tm, e daje a vzta

    hy mezi nimi jsou uloen a definovan v ruznch strukturch

    a objektech. daje jsou v databzi uloen zpravidla do vce

    tabulek, mezi ktermi jsou relacn vazby. Databze zapouzdru

    je ruzn objekty jako tabulky, pohledy, indexy, uloen proce

    dury, spoute a tak podobne. Pro nzvy objektu v databzi plat

    veobecn pravidlo, e nzev objektu mus bt jedinecn podle

    systmu:

    d t bze vl stnk objekt

    V databzi mohou bt ruzn objekty, naprklad databzov

    tabulky se stejnmi nzvy, pokud ovem maj jin vlastnky. Pro

    nzvy identifiktoru objektu podle normy SQL-92 plat, e se

    mohou skldat z minimlne jednoho znaku (na to byste urcite

    prili sami, ale tvurcov tto normy mus bt exaktnD a maxi

    mlne 128 znaku. Pro nekter platformy je ale maximln pocet

    znaku ni. Prvn znak identifiktoru mus bt psmenko nebo

    znaky _,

    @

    a #. Dal znaky mohou bt i cslice. Pokud identifi

    ktor obsahuje mezery, je nutn jej povinne uzavrt do hrana

    tch zvorek nebo do uvozovek .

    Databzov tabulky

    daje jsou v prostred relacnch databz uloeny v dvojroz

    mernch databzovch tabulkch. Tabulky se skldaj ze sloup

    c a rdku. Sloupec je mnoina daj jednoho datovho typu

    v tabulce. Nekdy se sloupcum rk tak atributy. Rdek (nekdy

    t nazvan zznam) je kombinace hodnot sloupc v tabulce.

    Kad rdek je obvykle jednoznacne identifikovateln za pomo-

    25

  • 5/21/2018 SQL-kniha

    15/49

    .

    ~~

    ~:i..

    I

    I~ ~

    ~~

    ..

    . -:I ~

    I

    p~j~

    ~~i

    II :: ~

    I :I_ S

    I

    E:: .

    ~j

    ~ ...

    30

    IU~ ~

    fc ~

    t ~J

    t

    j

    I =~j

    Zkladn orientace

    ve strukture

    jazyka SQL

    Pro zskn zkladn orientac e ve strukture jaz yka SQL mueme

    pout dva zpusoby prstupu - systematickou kategorizaci

    a lexikln kategorizaci. Systematick kategorizace rozdeluje pr

    kazy jazyka SQL na nekolik zkladnch podmnoin.

    Data Definition Language DDL)

    Data Manipulation Language DML)

    Data Control Language DCL)

    Transaction Control Commands TCC)

    Data Definition Language (DDL)

    cesky Jazyk pro definici dat (JDD)

    Prkazy z mnoiny DDL nm umonuj definovat struktury

    a vytvret v databzi ruzn objekty, jako naprklad tabulky,

    pohledy, indexy a tak podobne. Prkazy DDL lze menit struktu

    ru techto objektu nebo je ruit odstranovat). Do tto skupiny

    patr naprklad prkazy:

    F ~

    J

    Ii

    ..J

    I~

    I

    I~

    -

    j

    Iii' I I

    C REA TE D ATA BA SE

    CREATE TAB LE

    ALTER TABLE

    DR OP TA BLE

    CREATE INDEX

    DROP INDEX

    CREATE VIEW

    ALTER VIEW

    DROP VIEW

    DR OP INDEX

    C REA TE S EQ UEN CE

    AL TE R S EQ UEN CE

    9

  • 5/21/2018 SQL-kniha

    16/49

    30

    31

    ADD jmno_sloupce typ [omezen_integrity]

    MODIFY .

    DROP .

    Prkazy z mnoiny DDL jsou urcen pro nvrh struktur objektu

    v databzi. Mueme navrhovat a menit strukturu objektu v data-

    bzi prpadne odstranovat tabulky pohledy indexy a podobne.

    Pomoc klauzule DROP COLUMN mueme odstranit sloupec

    z databzov tabulky.

    ALTER TABLE pracovnici DROP COLUMN hodnoceni;

    Pomoc prkazu ALTERTABLE mueme tak pridvat a odeb-

    rat nikoliv vak modifikovat i omezen. Prpadne je mon je

    vypnout a opetovne zapnout bez toho abychom je museli

    Pomoc klauzule ADD mueme do databzov tabulky pridat

    nov sloupec.

    ALTER TABLE pracovnici ADD hodnoceni VARCHAR 30J;

    ALTERTABLE

    Pomoc prkazu ALTER TABLE mueme v databzov tabulce

    provdet zmeny v jej strukture naprklad pridnm novho

    sloupce modifikac ji existujcho sloupce odebrnm sloupce

    prpadne definovnm implicitn hodnoty pro nov sloupec.

    Zjednoduen syntaktick zpis pro tento prkaz je:

    Prkazy

    jazyka DDL

    ;;i YNTAX ~LTER TABLE jmno_tabul ky

    ~

    I,

    iI

    mm

    3

    ~

    i

    a

    i1

    3

    ~ii1

    .J

    ~i :

    J

    E I

    ~.iI

    j

    ~.~

    ~;~

    F~

    9~

    ~iI

    Jiii~ ~

    1

    1=.

    F

    ~-,

    t

    ~

    I

    I

    a;

    J;

    II:

    REVOKEROP USER

    GRANT

    UPDATE

    DELETE

    SELECT

    INSERT

    Data Manipulation Language (DML)

    cesky Jazyk pro manipulaci s daty (JMD)

    Umonuje manipulaci s daji to znamen vber a vkldn

    daju a jejich aktualizaci mazn daju a samozrejme velmi

    mocn prkaz SELECTpro vber daju. Patr sem ctyri hlavn

    prkazy.

    CREATE USER

    ALTER USER

    Data Manipulation Language (DML) - Jazyk pro manipulaci s daty (JMD)

    Transaction Control Commands (TCC)

    cesky Prkazy pro rzen transakc

    Podmnoina TCC obsahuje prkazy pro rzen transakc Do tto

    podmnoiny patr naprklad prkazy:

    SET TRANSACTION ROLLBACK

    COMMIT SAVEPOINT

    Data Control Language (DCL)

    cesky

    Prkazy pro rzen prstupu

    Podmnoina rdicch prkazu obsahuje speciln prkazy pro

    rzen provozu a drbu databze. Tak je mon pridvat

    a odebrat uivatelsk prstupov prva pro jednotliv uivatele

    a skupiny uivatelu. Do tto podmnoiny mueme zaradit

    naprklad nsledujc prkazy:

  • 5/21/2018 SQL-kniha

    17/49

    ~,~

    z tabulky odebrat a pozdeji znovu pridat. Ukeme si prklad

    pro vypnut omezen.

    mm CREATE TABLE pokus_tab

    (

    t~

    ji

    SYNTAXE

    ~ :~

    fc.~

    I-. =~

    ~.

    Eii

    ~iI

    ~:tJ

    ~~

    t=~

    SYNTXE

    jIu_

    J

    .,.~

    .-=~~

    .J~

    .1~

    . ~

    1 =3

    Nebo zjednoduene:

    CREATE [UNIQUE][BITMAP] INDEX jmno_indexu ON jmno_tabulky

    - sloupec_tabulky [,sloupec_tabulky]

    Bitmapov index vytvorme pomoc prkazu:

    CREATE BITMAP INDEX jmno_indexu ON jmno_tabulky sloupec :

    Kapitola 5 - Prkazy jazyka DDL

    ORACLE

    CREATE [UNIQUE][BITMAP]INDEX [vlastnk.]jmno_indexu

    ON [vlastnk.]jmno_tabulky sloupec_tabulky [ASC I DESC]

    -[,sloupec_tabulky

    [ASC I DESC] ] -

    [CLUSTER [vlastnk.]jmno][INITRANS n][MAXTRANS n][PCTFREE

    -n][STORAGE storage]

    [TABLESPACE tabulkov_prostor][NO SORT]

    Naprklad:

    CREATE INDEX ix_prac ON pracovnici id_prac :

    Nebo zjednoduene:

    CREATE [UNIQUE] INDEX jmno_indexu ON jmno_tabulky

    - sloupec_tabulky [,sloupectabulky]

    ,.

    PAD_INDEX I

    FILLFACTOR ~ fillfactor

    IGNORE_DUP_KEY

    I

    DROP_EXISTlNG I

    STATISTICS_NORECOMPUTE

    SORT IN TEMPDB

    CREATE [ UNIQUE ] [ CLUSTERED I NONCLUSTERED ] INDEX jmno_indexu

    ON { tabulka

    I

    pohled I sloupec [ ASC

    I

    DESC ] [ ,...n ]

    WITH

    [ '

    .n] ]

    ON filegroup ]

    s fyzickou strnkou uloen daju, a proto se podrobn synt

  • 5/21/2018 SQL-kniha

    18/49

    jmno_sloupceN datov_typ [DEFAULT vraz]]

    CREATE TABLE

    35

    ;

    id_zak int PRIMARY KEY .

    id_obj int PRIMARY KEY.

    id_zak int NOT NULL .

    FOREIGN KEV

    Omezen FOREIGN KEY definuje ciz klc v jin tabulce. Ciz

    klc definuje vztah k primrnmu klci jin nebo stejn tabulky .

    Kapitola 5 - Prkazy jazyka DDL

    FOREIGN KEY (id_zak) REFERENCES zakaznici(id_zak)

    ) ;

    Takto definovan ciz klc se vztahuje k primrnmu klci

    v tabulce:

    CREATE TABLE zakaznici

    (

    DEFAULT

    Pokud uivatel pri vkldn zznamu nezad hodnotu urcitho

    sloupce, bude vloena implicitn hodnota.

    CREATE TABLE pokus_default

    (

    stav VARCHAR(10) OEFAULT ???

    ;

    CREATE TABLE objednavky

    (

    omezen

    Pro zabrnen zadvn nesprvnch hodnot do databzovch

    tabulek je v nekterch prpadech vhodn zavst pro nekter

    sloupce urcit omezen. Syntaktick zpis je nsledujc:

    sloupec [CONSTRAINT jmno_omezen] typ_omezen

    Vechny omezen mueme pridvat i odebrat, nelze je vak

    upravovat. Pridn i odebrn omezen se realizuje pomoc pr-

    kazu ALTERTABLE.

    ir:=;rj

    1C:i~

    ~~

    ~ iiIIm

    ~~ ~

    ~ ~

    - I

    ~I ,;I

    .J

    ,,=1 iInm

    ~ ~

    ..-=

    -'

    3 J

    ~ ~

    I

    JI-

    I ~

    ~ ~

    I -

    .~ i :3

    INTEGER PRIMARY KEY.

    CHARACTER VARYING(25).

    CHARACTER VARYING(20).

    OATE.

    OEClMAL( 7.2).

    SMALLI NT

    id_prac

    jmeno

    funkce

    nastoupil

    mzda

    id_pobocky

    );

    34

    RE TEINDEX

    jmno_sloupce datov_typ [DEFAULT vraz] [.

    jmno_sloupce2 datov_typ [DEFAULT vraz].

    Prkazem CREATETABLEvytvorme v databzi novou tabulku.

    pln definice syntaxe tohoto prkazu je pomerne sloit, proto

    zde uvedeme zjednoduenou verzi tohoto prkazu.

    ~~ I{

    CREATE TABLE [schma. ]jmno_tabul ky

    (

    Naprklad:

    GE CREATE BITMAP INDEX ix_pohla vi ON seznam(pohlavi);

    MySQL

    pln syntaktick definice zn takto:

    YN ~g

    CREATE [UNIQUEIFULLTEXT] INDEX jmno_indexu ON jmno_tabulky

    (sloupec_tabulky [(dlka)], ... )

    Fulltextov indexy mueme samozrejme pout jen na textov

    datov typy CHAR a VARCHAR a jen na tabulky MyISAM.

    Volba DEFAULT specifikuje implicitn hodnotu, kter se poui-

    je pri vkldn novho rdku, pokud pro dan sloupec nebyln

    uvedena konkrtn hodnota.

    GE

    CREATE TABLE pracovni ci

    (

  • 5/21/2018 SQL-kniha

    19/49

    ~ CREATE [OR REPLACE] [FORCE] [NOFORCE] VIEW nzev_pohledu

    [ aliasl [. alias2]... ] AS vnoren_dotaz [seznam_omezen]

    iI

    ~

    3

    7

    Kapitola 5 Pr kazy jazyka DDL

    KEY nazev_akce. cas akce

    sloupec INT UNIQUE

    ;

    sloupec INT CONSTRAINT unikatniklic UNIQUE

    ;

    Nebo zjednoduene:

    Prkazem CREATE VIEW vytvorme v databzi nov pohled.

    Zjednoduen syntaxe prkazu pro vytvoren pohledu je nsle

    dujc:

    Primrn klc je mon vytvorit bud nad jednm, nebo v prpa

    de potreby i nad vce sloupci. Naprklad:

    CREATE VIEW

    UNIQUE

    Toto omezen vyaduje uniktn hodnoty. To znamen, e slou

    pec nebo kombinace sloupcu) mus bt jednoznacn pro

    vechny zznamy v tabulce.

    CREATE TA8LE pokus_unique_key

    CREATE TABLE pokus_primary_key

    nazev_akce VARCHAR 20 .

    cas_akce DATETIME.

    CONSTRAINT pk_akce PRIMARY

    ;

    CREATE TABLE pokus_primary_key

    sloupec INT PRIMARY KEY

    :

    CREATE TA8LE pokus_unique_key

    ~

    ~

    3

    3

    ~

    ii

    ~

    ~

    ~

    .nIm

    ij)

    IW ;]

    t-=~

    GIm

    ~~

    ~ I

    .;; i

    ~r

    ~

    ~

    J

    ~

    S;;

    a;

    ~

    ~

    to:

    ~

    ~

    ~

    sloupec INT NOT NULL

    );

    NOT NULL

    Sloupec, na kter se toto omezen vztahuje, nesm obsahovat

    hodnotu NULL.

    CREATE TABLE

    Nebo zjednoduene:

    sloupec INT.

    CHECK sloupec BETWEEN 1 AND 40

    };

    sloupec INT CONSTRAINT primklic PRIMARY KEY

    );

    sloupec INT CONSTRAINT identifikator NOT NULL

    ;

    PRIMARV KEV

    Primrn klc jednoznacne identifikuje kad zznam v tabu cl.: .

    Primrnm klcem mue bt jeden sloupec, prpadne kombinace

    vce sloupcu. Kad tabulka mue mt maximlne jeden

    pril1l:r-

    n klc. Toto omezen tak zabezpec, e dn sloupec,

    kter

    je

    soucst primrnho klce, nebude obsahovat hodnotu NUL ..

    GIm CREATE TABLE pokus_primary-key

    Nebo zjednoduene:

    GIm

    CREATE TABLE pokus_noLnull

    GIm CREATE TABLE pokus_noLnull

    CHECK

    Pomoc omezen CHECK definujeme podmnky a omezen,

    kter mus bt splneny pro kad zznam.

    GIm CREATE TABLE pokus_check

  • 5/21/2018 SQL-kniha

    20/49

    t=-~3

    Pro vymazn daju z databzovch tabulek slou prkaz

    DELETE,kter se pouv ve tvaru:

    ~NTAXE DELETE [FROMJ tabul ka WHERE podm nka

    ~/NTA)(E INSERT INTO jmno_tabulky [sloupecl [.sloupec2 .. JJ

    . VALU ES (hodnota_polokyl [,hodnota_poloky2 .. J)

    ...

    >:

    NO

    mm

    ~t.

    JI

    39

    INSERT INTO pracovnici

    VALUES (1, 'Novak Ma rtin ', ' general director', '1 6.0 1.1 981',50 000,10);

    Vyjmenovn jednotlivch sloupcu mueme vynechat, ale v tom

    prpade musme pochopitelne zadat hodnoty pro vechny

    sloupcc v takovm porad, v jakm byly uvedeny pri nvrhu

    Cseln hodnoty zpravidla zadvme bez uvozovek, znakov

    retezce a hodnoty pro datum a cas zadvme v jednoduchch

    uvozovkch.

    Prkaz INSERT se pouv pro pridvn novch zznamu do

    databze, presneji receno pro pridvn novch rdku do data

    bzovch tabulek. Zjednoduen syntaxe zn takto:

    Pomoc prkazu DELETE bez uveden omezujc podmnky

    dojde ke smazn vech rdku v tabulce. Nicmne przdn

    tabulka v databzi zustane.

    INSERT

    DELETE

    Prkazy

    jazyka DML

    Jazyk DML (Data Manipulation Language) slou pro manipula

    ci s daji. Prkazy z tto podmnoiny umonuj vber daju,

    jejich vkldn, aktualizaci i vymazn.

    ~

    3

    ~

    3

    k~'~~

    I-

    =~

    tE

    jij

    . ~

    ~~

    l ~

    E~

    31

    E

    fiij ;ji

    F.= ;ji

    : ~

    I-~

    ~

    ~-:-

    ti

    t:

    a;

    ~ ii

    ~

    CREATE VIEW

    DROP TABLE

    Pro odstranen pohledu slou jednoduch prkaz DROP VIEW.

    ,Y~f~.~~

    ROP VIEW nzev_pohledu

    38

    DROPINDEX

    DROP VIEW

    Naprklad:

    mm DROP VIEW funkce:

    Prklad umonuje odstranit tabulku v aktuln databzi. Prkaz

    potvrd vechny neukoncen transakce a vykon nevratn

    zmeny.

    j ~f~'

    DROP TABLE jmno_tabulky

    Naprklad:

    mm DROP TABLE pobocky;

    Index odstranme prkazem:

    ~ ~f~~

    ROP I NDEX jmno_tabulky.

    Naprklad:

    mm DROP INDEX ix_prac:

    Naprklad:

    mm CREATE VIEW funkce AS SELECT jmeno, funkce FROM pracovnici

    ~-----------~--------_ I I I

  • 5/21/2018 SQL-kniha

    21/49

    E=3

    INSERT

    ~~

    Kapitola 6 - Prkazy jazyka DML

    _ sama o sobe by nebyla pouiteln bez dvou pseudosloupcu

    It ~

    NEXTVAL a CURVAL. NEXTVAL pri pouit vygeneruje dal

    hodnotu sekvence a CURVALvrac aktuln hodnotu sekvence.

    ~ ~ CREATE TABLE zbozi

    E ~ (

    E:-~

    ~ ijI

    IE

    (1-

    (~~

    ;~

    I~ ~

    -I

    .:II

    U--i

    (~-~ ~

    I~

    n

    I~

    H

    O

    I

    ______ I_t

    V prkazu deklarujeme, e chceme generovat hodnotu sloupce

    id_zb od poctecn hodnoty

    1

    s prrustkem

    1.

    tabulky. Pri vkldn daju nekdy vyvstane poadavek genero

    vat uniktn hodnoty primrnch klcu.

    CREATE SEQUENCE nzev_posloupnosti

    [START WITH cslo]

    [INCREMENT BY cslo]

    [MAXVALUE cslo]

    [MINVALUE cslo]

    [CYCLE

    I

    NOCYCLE]

    [CACHE cslol NOCACHE];

    ...

    >:: :

    NC

    IV IV

    ~~

    Q N

    ,~

    U)

    41

    uniktnho identifiktoru klauzuli

    id_zb int auto_increment PRIMARY KEY,

    nazev varchar 30),

    id_zb int NOT NULL,

    nazev varchar 30),

    ):

    );

    INSERT INTO zbozi nazev) VALUES Kanc. papir );

    SELECT [*] [seznam_poloek_vstupn_sestavy]

    FROM jmno_tabulky

    WHERE podmnka_vberu

    GROUP BY poloky

    Prkaz SELECTslou pro vber daju z databzovch tabulek.

    Umonuje realizovat minimlne operace vberu, omezen,

    projekce a spojen.

    plnej a presnej definici pro prkaz SELECTby se nm asi

    teko podarilo vytvorit . Syntaxe prkazu SELECTje pomerne slo

    it a v nekterch detailech a podrobnostech se pro jednotliv

    databzov servery dost li. Zjednoduene bychom jeho synta

    xi mohli definovat takto;

    SELEtT

    CREATE SEQUENCE id_zb INCREMENT BY 1;

    INSERT INTO zbozi VALUES id_zb.nextval, Kanc. papir );

    MySQL

    Pouv pro generovam

    auto_increment.

    CREATE TABLE zbozi

    ~

    ~

    t )

    ~NTAXE

    3

    ~

    mrm

    ~

    identifiktoru se pouv prkaz

    zjednoduenou syntaxi mclIl l. :

    id_zb int IDENTITY 1, 1) NOT FOR REPLICATION PRIMARY KEY,

    nazev varchar 30).

    );

    4

    Parametr za klauzul STARTWITH definuje poctecn hodnoll l

    genertoru, implici tne se zacn od csla

    1.

    Pomoc parametru Z:I

    klauzul INCREMENT BY definujeme interval mezi clvelll:1

    Z:I

    sebou jdoucmi cslicemi. Implici tn hodnota tohoto parall1l l lIl

    je tak 1. Hodnoty mueme generovat i cyklicky, pokud pou;,i

    jeme klauzuli CYCLE. Maximln a minimln hodnotu l1asl:11 11

    jeme parametry za klauzulemi MAXVALUEA MINVALUI :.1 :11 :1

    metrem CACHE specifikujeme, kolik hodnot bude vygencf ::iE

    NO

    a a

    ~~

    D N

    . 1,

    U)

    7

    NAZEV

    ACCOUNTI NG

    RESEARCH

    SALES

    OPERATIONS

    Zoubkova M rosl ava

    Ticha Jana

    Kouma 1 Pet r

    Zoubkova Miroslava

    Ticha Jana

    Zoubkova Mi rosl ava

    Ticha Jana

    Ticha Jana

    FUNKCE

    general d rector

    developer

    marketing manager

    instalater

    Novak Martn

    Kouma 1 Pet r

    Kernova Jana

    Zoubek Mroslav

    JMENO

    INNER JOIN vnitrn spojen

    Tabulka bude po spojen obsahovat jen ty zznamy, kde se

    hodnoty spojovacch atributu shoduj. Jedn se o ekvivalent

    spojen pomoc klauzule WHERE. Naprklad:

    Novak Martin

    Novak Martin

    Kernova Jana

    Kernova Jana

    Kernova Jana

    Koumal Petr

    Koumal Petr

    Zoubkova Miroslava

    FULL JOIN pln spojen

    Pri tomto spojen se vyp i takov rdky, kter nesplnuj spo

    jovac kritrium. Pro kombinaci pracovnci - pobocky bude

    dotaz pro pln spojen vypadat naprklad takto:

    SELECT * FROM pracovnici AS p FULL JOIN pobocky AS o ON

    p.id_prac ~ o.d_pobocky;

    e~

    ~~

    ~~

    IFi ;ji

    E iI

    E~

    E~

    ~iI

    5==~

    Fii:~

    ImmI

    E--~

    E t

    E~

    li ~

    ~~

    F= ~

    F= i i

    ~. ~

    Kernova Jana

    Koumal Petr

    jmeno

    Novak Martin

    Novak Martin

    46

    jmeno

    E.mD

    ~lu~~

    I

  • 5/21/2018 SQL-kniha

    25/49

    JOIN- spojovn tabulek

    SELECT pracovnici.id_prac, pracovnici .jmeno, pobocky.id_pobocky,

    - pobocky.nazev

    FROM pracovnici RIGHT OUTER JOIN pobocky

    ON pracovnici .id_pobocky - pobocky.id_pobocky;

    RICHT OUTER JOIN - venkovn spojen z prav strany

    Pri tomto spojen se vyp i rdky, kter nesplnuj spojovac kri

    trium. Pri spojen z prav strany jsou prirazovni pracovnci

    k pobockm. Vypsan budou tedy vechny pobocky, ale pra

    covnci, kter nejsou prirazeni k nejak pobocce, se ve vpisu

    neobjev.

    ...

    >:iE

    NC

    1010

    iE~

    D.N

    10

    ' ..

    10 ACCOUNTlNG

    30 SALES

    20 RESEARCH

    40 OPERATlONS

    ID_POBOCKY NAZEV

    10_POBOCKY NAZEV

    Kapitola 6 - Prkazy jazyka DML

    pracovnici. jmen o, pobocky.id_pobocky,

    JOIN pobocky

    pobocky.id_pobocky;

    JMENO

    1 Novak Martin

    10 ACCOUNTlNG

    2 Kernova Jana

    30 SALES

    3 Koumal Petr

    20 RESEARCH

    4 Zoubek Miroslav

    40 OPERATlONS

    5 Ticha Jana

    1 Novak Martin

    2 Kernova Jana

    3 Koumal Petr

    4 Zoubek Miroslav

    IIU RI\C

    ID_PRAC JMENO

    Klauzule ORDER BY pro trden daju m v prpade, e se tr

    den vyaduje, pevn msto v SYNTAXI prkazu SELECT.daje

    lze trdit vzestupne, tj. od nejmen hodnoty po nejvy, nebo

    sestupne od nejvy hodnoty po nejni. Pro vzestupn trde

    n se pouv klauzule ASC (implicitn hodnota), pro sestupn

    DESe. Pozice techto klauzul v prkazu SELECT je za nzvem

    sloupce, podle kterho se trden poaduje.

    ORDER BY

    SELECT rracovni ci. id_prac,

    - pobocky.nazev

    ,IWM pr acovnici LEFT OUTER

    ON rracovnici.id_pobocky

    F+;J

    lt ~ii;1

    1r

    I~

    I

    E=~

    IF- ~

    E=- iii

    E,:

    ii

    =

    ;I

    ii;=- ~

    =

    ;;pD

    ~iI

    =

    ~~ iI

    . ~

    : 1i

    ;

    iii

    J;

    i i

    : ~

    LEFT OUTER JOIN - venkovn

    spojen z lev strany

    Pri tomto spojen dojde k vyps:

    n i takovch rdku, kter spojo

    vac kritrium nesplnuj. V prpa

    de spojen z lev strany budou

    prirazovan pobocky k pracov

    nkum. To znamen, e se vyp

    vichni pracovnci, tedy

    i ti,

    kter nejsou prirazeni do dn

    pobocky. Pobocka bez pracovn

    ka se ve vpise neobjev.

    ........M Vi U

    C ro C

    Q)

    01 E 'O

    'e-

    VJ

    L

    L aJ

    o o>

    +-' '

    U c

    aJ '

    L E

    00000

    00000

    00000

    ONLDCOCO

    Lf) M ev) r- I r- I

    . . . . .. .

  • 5/21/2018 SQL-kniha

    26/49

    Nebo:

    SELECT

    *

    FROM pracovnici ORDER BY mzda DESC:

    SYN~AK~ SELECT .. FROM .. [WHERE .. ] ORDER BY sloupec

    [ASC/DESC][.sloupec [ASC/DESC] ... ]

    Naprklad:

    SELECT * FROM pracovni ci ORDER BY nastoupi 1 ASC:

    ...

    ::iE

    ~c

    ~t\'I

    :i:~

    Qo,

    51

    50000,00

    35000,00

    32000,00

    18000,00

    18000,00

    MZDA

    Kapitola 6 - Prkazy jazyka DML

    FUNKCE

    general director

    developer

    marketing manager

    instalater

    secretary

    Datov typ

    varchar(15)

    varchar(l5)

    varchar(l5)

    Novak Martin

    Koumal Petr

    Kernova Jana

    Zoubek Miroslav

    Ticha Jana

    Nzev

    pri jmeni

    jmeno

    funkce

    Pokud jsou za prkazem SELECTvyjmenovan sloupce, mue

    IIH~ do klauzule ORDER BY zadat i poradov cslo sloupce,

    podle kterho chceme trdit. V naem prpade je sloupec mzda

    tr

    U

    '

    co

    .-- C o L

    +-' ,L

    C +-' L

    aJ

    . -- - ' r-

    u

  • 5/21/2018 SQL-kniha

    27/49

    ii

    ii1

    ~

    MZDA

    50000

    32000

    35000

    26000

    18000

    ID_PRAC

    JMENOUNKCEASTOU PIL

    MZDA

    D_POBOC KY

    1

    Novak Martin

    eneral di rector

    6.01.81

    0000

    0

    2

    Kernova Jana

    arketing manager

    3.07.842000

    0

    3

    Koumal Petr

    developer

    1.09.925000

    0

    4

    Zoubkova Miroslava secretary

    28.02.89

    60000

    5

    Ticha Jana

    secretary

    8.06.8980000

    53

    V praxi se velmi casto pouv kombinace projekce a restrikce,

    kdy vypisujeme jen urcit sloupce z vybranch zznamu, napr

    klad:

    Kapitola 6 - Prkazy jazyka DML

    Omezen realizujeme pomoc podmnky nsledujc za klauzul

    WHERE.

    WHERE- pouit klauzule pro spojen tabulek

    Ze Zkladnho principu optimlnch relacnch databz vyplv

    skutecnost, e daje jsou zpravidla uloen ve vce tabulkch,

    obvykle spojench relacnmi vazbami. daje z vce tabulek

    meme spojit pomoc klauzule WHERE. Naprklad:

    SELECT jmeno. mzda FROM pracovnici WHERE mzda >33000;

    loe se vztahuje na kombinace vech sloupc, kter jsou za

    klauzul DISTINCT uveden. Naprklad:

    SELECT DISTlNCT jmeno funkce nastoupi 1 mzda FROM pracovnici:

    JMENO

    Novak Martin

    Kernova Jana

    Kouma 1 Petr

    Zoubkova Miroslava

    Ticha Jana

    SELECT FROM pracovnici WHERE mzda >33000;

    SELECT pracovnici .jmeno pracovnici .funkce. pobocky.nazev

    FROM pracovnici. pobocky .

    WHERE pracovnici .id_pobocky - pobocky.id_pobocky;

    ; i

    ;p

    I l'EIi: m

    ~

    t~ ~

    I ?~

    ~-p

    Ic=-~

    DmI

    1 -1

    ~ ~

    ~-i1

    E

    ii

    a:;

    F

    E-~

    3

    I 3

    ...

    ~

    ..

    ~

    a;

    I~

    WHERE - pouit klauzule pro omezen

    Klauzule WHERE slou jednak pro restrikci (omezen vberu)

    zznamu a takt pro spojovn tabulek. Pod pojmem restrikcL:

    rozumme vber definovanch zznam. Mnoinu zznamll

    musme popsat pomoc nejak podmnky, kterou jsme schoPlli

    formulovat slovne nebo matematicky. Jednm ze zkladnch

    omezen je vyloucen duplicit pomoc modifiktoru DISTINCT,

    kter mus nsledovat ihned za klcovm slovem SELECT,Pf'()-

    zjistme, e databzov server odpov chybovm hlenm ve

    smyslu, e blok dotazu m nesprvn pocet sloupc vsledku.

    V prvnm dotaze to je jeden sloupec a v druhm ji dva. Proto

    musme sloupce jmno a prjmen sloucit do jednoho.

    5

    SELECT jmeno FROM pracovnici

    UNION

    SELECT prijmeni I I , I I jmeno AS jmeno_zakaznika FROM zakaznici:

    Kecal Jozef

    Kernova Jana

    Kouma 1 Pet r

    Kubikova Jana

    Novak Alfonz

    Novak Martin

    Plha Jan

    Rach Petr

    Ticha Jana

    Zoubek Miroslav

    UNION - spojovn nehomogennch tabulek

    Pokud pouijeme opertor UNION, zacneme se pribliov;11

    poadavku vypsat jmna pracovnk a kontaktnch osob v jed

    nom vpisu. Pokud intuitivne pouijeme prkaz:

    SELECT jmeno FROM pracovnici

    UNION

    SELECT prijmeni. jmen o FROM zakaznici;

    ~ jmeno_zakazni ka

  • 5/21/2018 SQL-kniha

    28/49

    WHERE- pouit klauzule pro spojen tabulek

    '~~

    I.

    I.

    . ;

    ,

    ~

    3

    UPDATE

    Slovne by se tato konstrukce dala popsat nsledovne: Vyber pr-

    slun zznamy z tabulek pracovnci a pobocky tak, aby spojo-

    van rdky vyhovovaly podmnce:

    pracovnici id_pobocky pobocky id_pobocky

    Vznam opertoru

    Sctn

    Odctn

    Nsoben

    Delen

    Celocseln delen (modulo)

    Binrn opertor OR(mezi bity operandu)

    Binrn opertor XOR(mezi bity operandu)

    Binrn opertor AND (mez bty operandu)

    Posunut bitu operandu doleva

    Posunut bitu operandu doprava

    Aritmetick a porovnvac operace mueme provdet i s hod-

    notami data a casu. Nejmen celocselnou jednotkou je den,

    prpadne jeho zlomkov cst. Pokud k urcitmu' datu pripoct-

    me cel cslo, pripoctme tm pocet dn, kter toto cslo repre-

    zentuje. Pokud k datu pripoctme desetinn cslo, naprklad

    H,25, pripoct se 8 dn (cel cslo pred desetinnou crkou

    reprezentuje pocet dnO a jete 1/4 dne, to jest 6 hodin. Pre-

    hledneji to lze vyjdrit pomoc tabulky:

    55

    Aritmetick opertory

    +

    Aritmetick opertor

    v

    jazyce SQL jsou implementovan tri druhy opertoru:

    ,Iritmetick

    porovnvac

    logick

    opertory

    ~

    ~. I

    -,

    ~i1

    ~'.

    E=

    E

    ; I

    e;

    (:::I

    ~ :~

    ~= ;~

    t :3

    I - '3

    IL,-i

    i~

    :. II ,:::::I

    I). i3

    ACCOUNTI NG

    RESEARCH

    SALES

    OPERA TI ONS

    NAZEV

    U N KC E

    general di rector

    developer

    marketing manager

    instalater

    Novak Martin

    Kouma 1 Pet r

    Kernova Jana

    Zoubek Miroslav

    Prkaz UPDATE slou pro zmenu hodnoty nekterch daju

    v databzovch tabulkch. Jeho zjednoduen syntaktick

    zpis je:

    ~ f ~~.

    PDATE tabul ka

    SET sloupec1 ~ hodnota1 [ sloupec2 ~ hodnota2

    J

    WHERE podmnka

    Prkaz UPDATE mueme uplatnit pro celou tabulku nebo jen na

    nekter konkrtn zznamy. Pokud pomoc restrikce, tedy

    pomoc podmnky v klauzuli WHERE, nespecifikujeme zznam

    nebo zznamy, kterch se m aktualizace tkat, budou se aktu-

    alizovat vechny zznamy ve vybran tabulce. Aktualizovat

    daje mueme na zklade hodnot jinch sloupcu uloench v t

    stejn nebo jakkoliv jin databzov tabulce.

    mm UPDATE pracovni ci SET mzda mzda

    *

    1 1:

    ~ JMENO

    ~~

  • 5/21/2018 SQL-kniha

    29/49

    SELECT 2001-07-02 01:02:0 3 INT ERVAL 3 HOUR:

    [200 ]-07-02 04:02:03J

    SELECT 2001-07-02 01:02:03 - INTERVAL 3 MONTH:

    [200 1-0 4-0 2 0]:02 :03 J

    SELECT 200]-07-02 01:02 :03 INTERVAL 1 I: ]:] DAY_SECOND;

    [200 1-0 7-0 3 02:03:04J

    funkce LlKE '%General director')

    funkce ~ 'General di rector' )

    funkce LlKE '%General director%')

    funkce LlKE 'General director%')

    funkce 'General director' )

    NOT funkce LlKE '%General director%')

    NOT funkce LlKE 'General di rector%')

    NOT funkce LlKE '%General di rector')

    Opertor specifikuje uzavren interval (obe

    hranicn hodnoty budou patrit do intervalu)

    Opertor specifikuje shodu s jednou hodno

    tou ze seznamu

    Opertor specifikuje shodu retezce podle

    znakovch kritri

    Opertor specifikuje hodnotu NULL

    WHERE

    WHERE

    WHERE

    WHERE

    WHERE

    WHERE

    WHERE

    WHERE

    Prklad

    LlKE

    IN

    57

    Kapitola 7 - Opertory

    BETWEEN . AND .

    I 'ro znakov datov typy obycejne pouvme porovnvac ope

    rtory trochu jinm zpusobem, a navc tak pouvme oper

    tor LTKE.

    V kombinovanch podmnkch mueme pout jete dal ope

    rtory porovnn:

    Konc na

    Nezacn na

    Nerovn se

    Obsahuje

    Neobsahuje

    Zacnna

    IS NULL

    Rovn se

    ORACLE'

    Ql Server

    MySQL

    I'orovnvac opertory a opertor BETWEEN se casto pouvaj

    v souvislosti s datovm a casovm intervalem. Pri porovnvn

    datovho a casovho intervalu se v naich koncinch zrejme

    V opertom LIKEse nejcasteji pouvaj dva zstupn znaky;

    < 1

    zastoup libovoln mnostv libovolnch znaku

    zastoup jeden libovoln znak

    popis porov

    nvacho

    opertoru

    Nekonc na

    ~ '33000' )

    '33000' )

    > '33000' )

    < '33000' )

    >~

    '33000' )

    =

    >

    33

    _I (

    ~-::I B

    ~- ~

    Ii ~

    ..- ~

    [i (

    13

    . ~

    I (

    ~I~

    I

    ~

    el

    ;1

  • 5/21/2018 SQL-kniha

    30/49

    Porovnvac opertory

    nejvc projev rozdlnost mezi jednotlivmi databzovmi plat

    formami. Tvar, ve kterm jsou implicitne nastaven databzov

    servery schopn rozeznat v podmnkch obsahujcch porovn

    vac opertory konkrtn datum a cas, je v tabulce:

    'Ql Server

    ' 03 .28.2001 13:30:22'

    ORACLE

    TO_DATEC'01.05.2001 13:30:22' , 'dd .mm.YYYY, HH24:M1:SS' )

    MySQL

    ' 28 .03.2001 13:30:22'

    Logick opertory

    NOT (nebo ) Kombinace se uplatn, pokud je nsleduj-

    c podmnka nepravdiv.

    AND (nebo I I) Kombinace se uplatn, pokud jsou obe

    podmnky pravdiv.

    OR

    (nebo &&) Kombinace se uplatn pokud je alespoi1

    jedna z podmnek pravdiv.

    priorita opertoru

    1. BINARY

    2. NOT

    4. - (unrn minus)

    5. * / %

    6.

    +-

    7.

    8. &

    9. I

    10.

    < >= =

    IN IS LIKE REGEXP

    11. BETWEEN CASE

    12. AND

    13. OR XOR

    58

    I \

    ei;l

    ) I

    ~.~

    ) (

    E~

    ) (

    t==~

    ) (

    ~~

    ) I

    I-=i iI

    ) I (

    EI ti

    ) I (

    ~I II

    )' -1

    r

    1;::1

    I-II

    1==1

    i I

    J;~ ~

    ~='~

    ~= ~

    I I I

    1;=1

    ti ~

    ~

    a ;

    ~

    I ;

    I (

    I: 3

    Funkce

    Funkce jsou bloky kdu, kter vykonvaj na zklade paramet

    ri'1poadovanou operaci, naprklad matematickou, statistickou,

    nebo naprklad operaci s textovm retezcem, a v prpade bez

    chybnho prubehu vrt nejak vsledek. Mueme je rozdelit do

    dvou skupin.

    Agregacn funkce

    pracuj nad mnoinou rdku, pricem vra

    cej jeden vsledek pro celou vstupn mnoinu daju. U nekte

    rch funkc se pouvaj modifiktory DISTlNCT a ALL. Modifi

    ktor DISTINC zpusob, e se kad hodnota zapoct jen jeden

    krt, modifiktor ALLnaopak zpusob zapoctn prslun hod

    noty pri kadm jejm i opakovanm vskytu.

    Jednordkov funkce

    pracuj jen s jednm rdkem, pricem

    pro kad rdek vrac jednu hodnotu. Mohou mt libovoln

    pocet parametru nebo nemus mt parametr dn. Parametrem

    mue bt jmno sloupce, hodnota promenn nebo uivatelem

    zadan konstanta. Obecn syntaktick zpis pro funkce v jazy

    ce SQL je:

    funkceCparam1, param2, ... ).

    Pro vetinu prkladu jednordkovch funkc nm stac jednodu

    ch testovac tabulka TEST. Tabulka m jeden sloupec NN

    VARCHAR2 (1) a jeden zznam, kter ve sloupci NN obsahuje

    hodnotu X . Nejjednodu prklad pouit t to tabulky je pou

    it databzovho serveru jako kalkulacky.

    SELECT 1 1 FROM test; [2J

    Pro MS SQL a MySQL lze pout i zkrcen prkaz

    SELECT 1 1.

    59

    Funkce

    J

    ,...

  • 5/21/2018 SQL-kniha

    31/49

    ABS

    61

    [240J

    ORACLE

    BIT_TO_NUM

    ATAN

    BIT_TO_NUM (posloupnost)

    FlInkce BIT_TO_NUM prekonvertuje binrn cslo na dekadick.

    Bin,rn cslo je reprezentovan posloupnost nul a jednicek

    odd(]ench crkami.

    5[L[CT BIN_TO_NUM(I.I.l.l.0.0.0.0) FROM test;

    Kapitola

    8 -

    Funkce

    kitml ';IIICI

    IISIN(0,5) FROM test;

    r~~II. ~,%359lJ17559829893]

    .iiI

    ~ l~INrAX~.

    \TIINII)

    ) I

    I

    l, lInkce i\Ti\N vrt hodnotu hlu v radinech, kter je vsled-

    . . kelll inverzn goniometrick funkce tangens s parametrem n.

    I ~I scu:cr IITIIN(0.5) FROM test;

    ::::

    I iI~

    ) I ( I (U6364760900080609]

    i AVG

    I

    E-

    I .rNTAxE IIVG([O ISTI NCT I ALLJ vraz)

    ~;;: ~ .

    i \gregacn funkce AVG vrt aritmetick prumer z mnoiny hod-

    j -

    I

    I

    nol. Z matematickho hlediska je to soucet hodnot vydelen

    ~_ ~ jejich poctem. Do poctu se nezahrnuj hodnoty NULL.

    .-CI

    --I . SELECT AVG(mzda) AS Prumerna mzda FROM pracovnici;

    E Prumerna mzda

    I I I

    U U

    E iI 30600.00

    ~ .

    I_I I

    ~i

    ~rNTAXE

    I~I

    I

    I

    I~I ;ij

    II mu

    I~-=II ;J

    I~~~

    ji (

    '~ri~

    [l80.0J

    [lOJ

    [24.01.03J

    Funkce ABS vrac absolutn hodnotu csla n. Kladn cslo zusta

    ne nezmenen, zporn cslo se zmen na kladn. Naprklad:

    SELECT ABS(-10) FROM.test;

    SELECT ACOS(-I) *180/PI() FROM test;

    ORACLE

    ADD_MONTHS

    SELECT ACOS(-I) FROM test;

    [3.1415926535897931J

    ACOS

    Funkce ADD_MONTHS vrt nov datum, vytvoren z puvodn

    ho data, kter bude posunut o dan pocet mescu.

    Pokud chceme zskat vsledn hel msto v radinech ve stup

    nch, mueme pout naprklad prkaz:

    Funkce ACOS vrt hodnotu hlu v radinech, kter je vsled

    kem inverzn goniometrick funkce kosinus s parametrem n.

    SELECT ADD_MONTHS(SYSDATE. 2) FROM test;

    ASIN

    Funkce ASIN vrt hodnotu hlu v radinech, kter je vslcd

    kem inverzn goniometrick funkce sinus s parametrem n.

    r~ 4 ~BS (n)

    ~NI4 ~ACOS (n)

    ~I~~DD_MONTHS(datum. pocet_meScu)

    ~X~J4 E

    ASI N(n)

    r E ~

  • 5/21/2018 SQL-kniha

    32/49

    Funkce I I I

    -------------------l.

    I I

    :CI.

    ) I I

    ~I.

    J )irNrAx~ COS(

    JI)

    ~i'

    \ll1k~~COS vrt hodnotu kosinu hlu, pricem hel zadvme

    r:itli:ll1ech.

    ~i LI SIII:CT COS(0.8) FROM test;

    ~ . IO.G9G70670934716539J

    ) I I

    COUNT

    ~I NTAXE COONT([DISTINCTIALLJ vraz)

    I Jr

    IjJC

    Agregacn funkce COUNT vrt pocet hodnot v mnoine daju.

    I

    Ve spojen s klauzul DISTINCT mueme zjisti t pocet zznamu

    I=iCI.

    bez duplicit.

    I -, I ( 'om.

    korektora; Funkce COUNT(*) je vjimkou v agregacnch

    ~G: ~

    funkcch, nebot poct i zznamy s hodnotami NULL.)

    -I' I ml I

    SELECT COUNT(*) AS Pocet pracovniku FROM pracovnici;

    ~=l~

    I

    I

    wm

    ~~~~~ ~~ ~~~~ ~~

    EI

    _I

    ~i ~ CURDATE

    ~I ~

    My5QL

    ~ I ~YNTAX( CURDATE()

    a.;

    i

    ~

    Funkce CURDATE vrt aktuln datum v retezcovm tvaru

    ~_:::I RRRR-MM-DD nebo v cselnm tvaru RRRRMMDD,pokud pou-

    . i ~ ijeme cselnou konstantu .

    . ~ SELECT CURDATE(); [2004-12-09J

    j ~:.:.t.Wo:II S ELECT CURDA TE () + o; [20021209J

    I; u

    ii

    i -(

    ~~ J

    SELECT nazev, CAST(nazev AS char(5)) FROM pobocky;;

    SELECT nazev, CONVERT(char(5). nazev) FROM pobocky;

    63

    Kapitola 8 Funkce

    RESEA

    SALES

    Hl ' ,I I IHCI I

    ',1111.:

    cos

    [4J

    ACCOU

    RESEA

    SALES

    ACCOU

    [ , mJ )

    nazev

    ACCOUNTING

    RESEARCH

    SALES

    Funkce CAST je urcen pro konverzi datovch typu.

    SELECT nazev, CAST(nazev AS char(5)) FROM pobocky;

    CAST

    SELECT CEILING(3.14159265359) FROM test;

    CEILlNG

    Funkce CEILING vrac hodnotu nejmenho celho csla, kter

    je vet ne parametr n.

    CONVERT

    Funkce CONVERT je urcen pro konverzi datovch typu, pri

    cem lk je pomocn parameter pro rozsah datovch typl 1

    nchar, nvarchar, char, varchar, binary a datovho typu varbina

    ry a parametr styl slou pro formtovn hlavne pri prevodu

    data a casu nebo csel na retezce.

    Nebo;

    ACCOU NT NG

    nazev

    6

    .~ ~ A ~

    AST (vraz AS datov typ)

    mt~~EILING(n

    at

    Server

    siijt~~CONVERT (datov typ [ ( dlka) J , vraz [ , styl J)

    Funkce

    E-

    r

    tli

  • 5/21/2018 SQL-kniha

    33/49

    URTIME

    URRENT_TIMEST MP

    65

    Kapitola 8 - Funkce

    Zkratka dne v tdnu

    Sun ..Sat

    Den v mesci 00..31

    Nzev mesce January..December

    Nzev dne v tdnu SundaV..Saturdav

    Porad dne v mesci podle angliCk specifikace radovch cslo

    vek (1St, 2nd, 3rd,

    Rok cslem na 4 cslice

    Rok cislem na 2 cslice

    Rok pro tden zacnajc nedel i na 4 cslice (pouv se ve spo

    jen s '%V')

    Rok pro tden zacnajCpondelkem na 4 cslice (pouv se ve

    spojen s '%v')

    %x

    %X

    %D

    %M

    %d

    %y

    %y

    Funkce DATE_FORMAT vrt datum ve tvaru urcenm formto

    vacm retezcem. Syntaxe formtovacho retezce udv tabulka:

    speCifiktor popis

    %a

    %W

    D TE_ DD

    I I I

    ~liI

    I

    I (

    rU

    ) I

    I MySQL.

    I.NTAXE

    UATC DD(uatum, INTERVAL vraz. typ)

    ) I ( FUllkct: Di\TE_ADD pripoct hodnotu specifikovanou pomoc

    ri

    U

    paral11t: trLIvraz a typ. Vraz se vkld ve tvaru retezce, kter jev tahulce u funkce EXTRACT,naprklad pro interval

    DAY_SECOND

    E.: -

    St: vkl;d retezec ve tvaru

    dny hodiny:minuty:sekundy .

    Vraz

    I

    I _I 11IlICt i zporn cslo.

    ~ SELECT DATE ADD( 2001-07-02 01:02:03 . INTERVAL 3 HOUR):

    I [2001-07-0204:02:03J

    ~I ~ SELECT DATE_ADD( 2001-07-02 01:02:03 . INTERVAL 3 MONTH);

    I

    I

    I

    [2001-07-0204:02:03J

    -=:=

    SELECT DATCADD( 2001-07-02 01:02:03 . INTERVAL 1 1:1:1

    l'

    DIIY_ SECOND); 2001-07-03 02:03:04J

    1==1

    D TE_FORM T

    I

    -I

    I MySQL.

    r-

    ilNTAXE

    DATE_ FORMAT

  • 5/21/2018 SQL-kniha

    34/49

    67

    Kapitola 8 - Funkce

    DATEDIFF

    SQL Server

    DIITE01FF(cst_data, datum1, datum2)

    Funkce DATEDIFF vrt pocet sekund, dn, . ..roku, podle zada

    nho parametru cscdata, kter je mezi dvema daty, kter jsou

    zadan parametry datum1, datum2. Pokud chceme zjistit pocet

    dn lJ)ezi 1. lednem 2001 a 1. lednem 2002, pouijeme prkaz:

    SUHT OATEDIFF(day.

    01/01/2001 . 01/ 01/2002

    FROM test: [365]

    Neho prkazem zjistme, kolik sekund m jeden den.

    SELECT oATEAOOlday,-7,GEToATEI) FROM test;

    _L2002-11-17 10:43:06. 687]

    Pokud zadme parametr cslo zporn, vrtme se o sedm dn

    do minulosti.

    DATEADD

    SQL Server

    DIITEIIoo(cst_datumu, cslo, datum)

    Funkce D TEADD vrt novou hodnotu data a casu, vygenero

    vanou z pvodn hodnoty, kterou udv parametr datum. K tto

    hodnote se pripoct prslun pocet (dan parametrem cslo)

    c:Sl data, prpadne casu. Pokud bychom chteli posunout dne

    n dalum o 7 dn, pouili bychom prkaz::

    SEI. ECT oATEAOOlday,7,GEToATE( FROM test:

    _[2002-12-01 10:41:06.753]

    ', 1 11

    1I\( '( ;D TE_SUB odpoct hodnotu specifikovanou pomoc

    P:II' :II11clr( 1raz a typ. Vraz se vkld ve tvaru retezce, kter

    jc v 1:lhuln; u funkce EXTRACT.

    ~;ILECl DIITE_SUB( 2001-07-02 01:02:03 , INTERVAL 11:1:1

    _DIIY_SECONo); [2001-07-01 00:01 :02]

    ~.~

    -

    II

    'I~

    I

    I

    I;~

    I

    II

    II.

    ) I \

    ~I.

    ~ .

    I

    ~ I

    NfAXE

    EJ. 111

    ~411

    rkJ

    iI__

    jlJ Wll

    1;=

    -

    ~

    -II~I

    EI411

    ~

    ~~

    ' ,.

    -=:11 II

    I~ ~

    ia;-

    ~ m1

    IJ;J

    I~ \

    Den v mesci

    0..31

    Mesc 01..12

    Mesfc (1..12)

    Zkratka mesce (Jan..Dec)

    Den v roku

    001..366

    Hodiny

    00..23

    Hodiny 0..23

    HOdiny

    01..12

    Hodiny

    01..12

    Hodiny (1..12)

    Minuty

    00..59

    cas ve 12hodinovm formtu hh:mm:ss [AP/M

    cas ve 12hodinovm formtu

    hh:mm:ss

    Sekundy (00..59)

    Sekundy (0..59)

    AMnebo PM

    Den v tdnu

    0=Sundav..6=Saturdav

    Tden

    00..53 ,

    zacn nedel

    Tden

    00..53 ,

    zacn pondelm

    Tden

    01..53 ,

    zacn nedeJ[(pouva seve spojen s '%X')

    Tden

    01..53 ,

    zacn nedel (pouva seve spojen s '%x)

    Znak %.

    DATE_ UB

    66

    Specifiktor popis

    %e

    %m

    %c

    %b

    %j

    %H

    %k

    %h

    %1

    %1

    %i

    %r

    %T

    %5

    %s

    %p

    %w

    %U

    %u

    %V

    %v

    Funkce

    My5QL

    SYNTAXE oATE_SUB(datum, INTERVAL vraz, typ)

    Naprklad pro vpis data a casu podle naich zvyklost bycholJ)

    pouili formtovac retezec

    '%d.%m.%Y %H:%i :%5':

    El1D SELECT oATEJoRMAT( '2001-07-02 01:02:03'. '%d.%m.%Y

    -%H:%i :%S '); [ 02 .07.200101 :02:03]

    F=-~

    I

    Funkce

  • 5/21/2018 SQL-kniha

    35/49

    68

    Prpadne zjistme, kolik dn zbv do Vnoc.

    SELECT OATEOIFF(day, GETOATE(). 12/24/2002 ) FROM test; [30J

    DAV

    S'Q1. Server

    ~y~t~

    DAY(datum)

    Funkce DAY vrt cselnou hodnotu dne ze zadanho data,

    naprklad;

    SELECT DAY( 11/24/2002 ) FROM test; [24J

    [228J

    [15J

    [SaturdayJ

    Funkce DAYNAME vrt nzev dne v tdnu ve forme textovho

    retezec.

    Funkce DAYOFMONTH vrt cselnou hodnotu odpovdajc

    poradovmu cslu dne v mesci, tedy v rozsahu hodnot 1 a 31.

    Funkce DAYOFWEEK vrt poradov cslo dne v tdnu podle

    standardu ODBC 1 - nedele, 2 - pondel, .... 7 - sobota).

    SELECT DAYOFWEEK( 2000-01-01 ); [7]

    DAVOFWEEK

    DAVOFVEAR

    DAVOFMONTH

    DAVNAME

    tC:iJ

    (

    ~i1J

    I MySQL

    ~

    j]NTAXE DAYNAME( datum)

    (

    ~i

    I

    1iC:.

    P

    S ELECT DAY NA ME ( 2000-01-01 ) ;

    I

    FCiI

    MySQL

    I::

    ~N TA X~ D AY OFM ON TH (d at um)

    I

    ~i

    I

    ~ am SELECT DAYOFMONTH( 2000-01-15 );

    I

    ~ I

    MySQL

    ~ QNTAXE DAYOFWEEK(datum)

    i .

    E? 1J

    ~::-mm

    ~m

    I=- II

    MySQL

    - I YNTAX~ DAYOFYEAR(datum)

    I:- I II

    Funkce DAYOFYEAR vrt poradov cslo dne v roku, tedy

    I

    v rozsahu hodnot 1 a 366.

    ~ I i1 H.t41 SELECT DAYOFYEAR( 2000-08-15 );

    [

    a;-I 1I

    \

    ~I JI

    [86~OOJ

    ELECT DATEDIFF(second, 0I/0I/2002 , 0I/02/2002 ) FROM test;

    DATEPART

    5 01.

    Server

    ~~~T~DATEPART(cst_datumu. datum)

    Funkce DATEPART vrt cselnou hodnotu csti data zadanou

    prvnm parametrem pro datum zadan druhm parametrem.

    Naprklad zjistme aktuln mesc:

    SELECT DATEPARHmonth. GETDATE( FRDM test; [lIJ

    DATENAME

    5'Q1.

    Server

    ~~~~ DATENAME(cst_datumu. datum)

    Funkce DATENAMEvrt pojmenovanou cst data zadanou prv

    nm parametrem pro datum zadan druhm parametrem. Napr

    klad zjistme aktuln mesc;

    SELECT DATENAME(month. GETDATE( FRDM test; [NovemberJ

    Funkce I Kapttola 8 - Funkce

  • 5/21/2018 SQL-kniha

    36/49

    ---------------I. _

    DBTIMEZONE ~ EXTRACT '

    ORACLE I I

    MWSCll

    ~ ijI~ E~BTIMEZONE ~ .NrAx~ I:XIHIICr Lyp FROM datum)

    ~.

    .J.

    ~.

    ,

    ~.

    t=.

    II==

    ~ .

    ~ ~

    ~

    ji

    ~ ~

    .-==

    ID

    IC-

    1

    ij

    . ~

    3

    I

    SELECT SYSDATE. EXTRACT YEAR FROM SYSDATE) FROM DUAL;

    Funkce DBTIMEZONE vrt nastavenou hodnotu casovho

    posunu databzovho casu oproti svetovmu casu GMT.

    71

    [3J

    [2J

    [1]

    [2J

    [7]

    [2001]

    [203J

    [102J

    [201J

    Roky

    roky-mesice

    hodiny:minuty:sekundy

    dny hodiny:minuty

    dny hodiny:minuty:sekundy

    Mesce

    minuty:sekundy

    hodiny:minuty

    dny hodiny

    Sekundy

    Minuty

    Hodiny

    Dny

    Funkcevrt

    EXTRACT SECONO FROM 2001-07-02 01:02:03 );

    EXTRACT MINUTE FROM 2001-07-02 01:02:03 ):

    EXTRACT HOUR FROM 2001-07-02 01:02;03 ):

    EXTRACT DAY FROM 2001-07-02 01:02:03~):

    EXTRACT MONTH FROM 2001-07-02 01;02:03 ):

    EXTRACT YEAR FROM 2001-07-02 01:02:03 ):

    EXTRACT MINUTE_SECOND FROM 2001-07-02 01:02:03 ):

    EXTRACT HOUR_MINUTE FROM 2001-07-0201:02:03 ):

    EXTRACT DAY_HOUR FROM 2001-07-02 01;02:03 );

    Naprklad:

    SELECT

    SELECT

    SELECT

    SELECT

    SELECT

    SELECT

    SELECT

    SELECT

    SELECT

    IIOUI{

    Typ

    Sr:COND

    MJNUTE

    l,'lIlIkce I~XTRACTvybere tu cst data nebo casu, naprklad rok,

    IIIl:sc, den, hodinu, minutu, sekundu, kter je zadan paramet

    rl:lll typ. Vsledek tvor kompaktn retezec. Naprklad cas

    III:II?:03 je vyjdren retezcem 10203. V na tabulce jsme kvuli

    prehlednosti vkldali znaky, kter se zadvaj ve funkcch dato

    v a casov aritmetiky.

    )i\Y

    MONTH

    YEAR

    MINUTE SECOND

    IIOUR_MINUTE

    DAY_HOUR

    YEAR_MONTH

    IIOUR_SECOND

    Di\Y_MINUTE

    DAY_SECOND

    2004

    [+OI;OOJ

    EXTRACT YEARFROMSYSDATE)

    ORACLE

    SELECT DBTIMEZONE FROM test;

    EXP

    Funkce vrac hodnotu n-t mocniny csla e (zklad prirozench

    logaritmu). Funkce je inverzn k funkci LN.

    SELECT EXP 3) FROM test; [20.085536923187668J

    EXTRACT

    Funkce EXTRACT na zklade specifikace urcen prkazovm

    retezcem vrt poadovan csti, ze kterch se skld datum,

    kter je tak soucst prkazovho retezce. Prkazov retezec se

    zadv ve tvaru cst FROM datum , kde z data mueme

    vybrat klasick komponenty, naprklad YEAR, MONTH, DAY,

    HOUR, MINUTE, SECOND (rok, mesc, den, hodina, minuta,

    sekunda) nebo TIMEZONE_REGION, TIMEZONE_ABBR.

    SYSDA TE

    08.01.2004 21;46:50

    70

    ~ 8,~gE

    EXP n)

    ~ 8I~~XTRACT prkazov_retezec)

    r c-~_~~~~ ,

    Funkce

    .

  • 5/21/2018 SQL-kniha

    37/49

    7

    sig ~ FLOOR(n)

    Funkce FLOOR vrac hodnotu nejvetho

    lho

    csla, kter je

    men ne parametr n.

    MySQL

    ~ ~fAXE

    FROM_OAYSCpocet dn)

    Funkce FROM_DAYS vrt datum, kter vznikne pripoctnm

    zadanho poctu dn k poctku naeho letopoctu.

    SELECT FROM_OAYS(500000); [1368-12-14]

    7

    dn zbv od

    Kapitola 8 Funkce

    [30.11.2002 20:14:41]

    [2002-11-24 21:48:58.443] ,

    HOUR

    CHAR

    ~ .

    ei~

    ~ i_I ',IIICI lIIcIIIICDIlTEC) FROM test;

    J;'

    r

    r M .6QL

    ~ .NIAX~ IIOUr(CCdS)

    I

    1,'llnkCl;I-IOURvrt hodnotu hodin ze zadanho casu.

    : r :m W:T IIOUR{'IUH9' [111

    I

    ~ ,aNIAX~ CIIA (Ccslo)

    I Funkce CHAR prekonvertuje binrn reprezentaci znaku na

    ~ 141

    znale

    . I

    .Jri.rm.1I

    SELECT CHAR(65) FROM test; [A]

    :;z: 1 SU.ECT CHAR(65) +CHAR(66) +CHAR(67) FROM test; [ABC]

    I

    ~I

    LAST DAV

    ~ .. ORAC~E'

    I SYNTAXE LIIST_DAYCdatum)

    i

    Funkce LAST_DAY vrt nov datum, vytvoren z puvodnho

    ata tak, e nastav posledn den v mesci.

    ~i

    t..

    S[LECT LAST_OAYCSYSDATE) FROM test;

    E=j

    Pomoc tto funkce lze naprklad zjistit, kolik

    onkrtnho zadanho data do konce mesce:

    ~i~

    SELECT SYSDATE, LAST_DAYCSYSDATE) - SYSDATE

    '''Do konce mesce zbyva dnu FROM test;

    r~SIl ~

    I~~ :- ~::[:~:~------------~_~~~~:_~:~:c:_~~~~~_~~~

    n

    ?~.11.2004 20:19:36 6

    I~III iI

    I

    ~j~.

    H ~

    [200107]

    [10203J

    [20102J

    [2010203J

    [3]

    [2002-11-24 22:48:58.443]

    SELECT EXTRACTCYEAR_MONTH FROM 2001-07-0201:02:03 ) ;

    SELECT EXTRACTCHOUR_SECONO FROM 2001-07-0201:02:03 ) ;

    SELECT EXTRACT(OAY_MINUTE FROM 2001-07-02 01 :02:03 );

    S ELECT EXTRAC TCOA Y_SEC ON O FROM 2001-07-02 01:02:03 );

    FLOOR

    SELECT FLOORC3.14159) FROM test;

    FROM_DAVS

    SELECT GETDATEC) FROM test;

    GETDATE

    5'01. Server

    ~ ~f~E GETDATEC)

    Funkce GET DATE vrt aktuln hodnotu data a casu, napr

    lad;

    GETUTCDATE

    5'Q1 Server

    ~~ ~ GETUTCDATEC)

    Funkce GETUTCDATE vrt aktuln hodnotu data a casu pf

  • 5/21/2018 SQL-kniha

    38/49

    LEFT

    CURRENT_TIMESTAMP

    OCAL1IMESTAMP

    ?~.11.04 20:06:05.000001 24.11.04 20:06:05.000001 +01:00

    MAX

    Kapitola 8 - Funkce

    LOWER(retezec)

    Funkce LOWERprekonvertuje vechna psmena vstupnho tex-

    tovho retezce na mal psmena abecedy. Ostatn znaky, napr-

    klad cslice a jin, zustanou nezmenen.

    SELECT LOWER(' Nahoru - Dol u 123 cH ) FROM test:

    -[nahoru - dolu 123 ctJ

    LTRIM(retezec)

    Funkce LTRIModstran vechny mezery z lev strany Cod zact-

    ku) vstupnho textovho retezce.

    SCLECT LTRIM(' Pred textem je 5 mezer') FROM test:

    -[f'r'ed textem je 5 mezerJ

    75

    MAX(vr'iJz)

    i\gr

  • 5/21/2018 SQL-kniha

    39/49

    Minimal ni mzda

    50000,00

    10,8003069

    [January]

    25.11.02

    77

    SYSOtlTE MONTHS_BETWEEN(SYSDATE,TO_DATEC '1.1.2002', 'DD.MM.YYYY'))

    Desetinn cslo vyjadruje zlomek mesce, v naem prpade pri-

    hline H desetin mesce (presne

    0.8003069).

    SELECT MONTHNAME( '2000-01-01');

    ORACLE

    MONTHS_BETWEENCdatuml, datum2)

    Funkce MONTHS_BETWEEN vrt cslo (datov typ NUMBER,

    v tomto prpade desetinn), kter vyjadruje pocet mescu mezi

    dvema daty. Pokud je parametr datuml vet ne datum2, je

    vsledn cslo kladn, v opacnm prpade je vsledkem cslo

    zporn.

    SELECT SYSDATE, MONTHS_BETWEEN(SYSDATE,

    -TO_DATEC '1.1.2002', 'DD.MM.YYYY')) FROM test;

    MONTHS_BETWEEN

    MySQL

    MONTHNAME(datum)

    Funkce MONTHNAME vrt nzev mesce ve forme textovho

    rL:lCZce.

    Funkce I vIONTHvrt cselnou hodnotu mesce ze zadanho

    data, naprklad;

    SELECT MONTHC'11/24/2002') FROM test; [11]

    MONTHNAME

    ~iI

    ~D

    ~ itfID

    I

    J:i;1 a

    -I

    (I i NTAXE

    ILJa

    ,~~

    e

    CI

    1==1 ft

    . j ~NTAXE

    :1==1

    a

    :~ a

    iE G

    \~J:O

    I

    _J

    .mII m

    :~1a

    IEII

    CI

    IE ?'G

    IJ;ii:::

    I~=

    I~J

    [I

    [35]

    ELECT MINUTEC'1l;35;59');

    7

    MINUTE

    SELECT MAX(mzda) AS Maximalni mzda FROM pracovn ici;

    MIN

    18000,00

    Funkce MAX a MIN mueme pout prakticky pro kad dato-

    v typ. V prpade cselnch datovch typu je maximum a mini-

    mum plne jednoznacn. U datovho typu datum bude maxi-

    mum predstavovat nejnovej zznam a minimum zznam nej-

    star. U znakovch datovch typu budou hodnoty serazen

    podle abecedy.

    ~ Maximal ni mzda

    1fLi ~.

    MINCvraz)

    Agregacn funkce MIN vrt minimln hodnotu z mnoiny

    daju. Hodnoty NULLse ignoruj.

    SELECT MIN(mzda) AS Minimalni mzda FROM pracovn ici;

    My5QL.

    X t~E

    MINUTECcas)

    Funkce MINUTE vrt hodnotu minut ze zadanho casu.

    MONTH

    s'Ql Server

    :S N f.~~

    MONTH(datum)

    ~.

    Kapitola 8 - Funkce

    r

    ~1i J

    Funkce

  • 5/21/2018 SQL-kniha

    40/49

    ORACLE

    25.11.02 01.12.02

    SYSDATE NEXT_DAY

    9

    [3J

    Funkce R IGH T vrt dan poce t z na ku, kter urc me parametrem

    dlka z prav cs ti od konce) vs tupnho textovho retezce.

    SI:l.ECT RIGHT( 'Jozefina Kristina Novakova' ,8) FROM t est; [Novakova]

    REPLACE

    e i1I

    1311

    1, l lllk \ ; QIJAlrl EI{ vrt por adov cs lo kvar tlu v r oku, tedy

    ~i

    v

    1

    I/.s:d

    U

    hodnot 1 a 4.

    gl~ ~IILCI iJlJi\I{JEIW2000-08-15');

    ~I;a

    I

    SYNTAXE

    REI'LAC[C ~eLezec1. retezec2 [, retezec3J)

    E:i

    Funkce ImPLACE vrt nov retezec vytvoren z puvodnho

    t t ce rctezec1, pricem nahrad vechny vskyty retezce2

    ei

    retbcem3. Pokud parametr retezec3 chyb, budou vechny

    skyty retezc e2 v retez cn vymaz an .

    E:i

    SELECT REPLACEC' Snehurka cekal a'. 'Snehurka', 'Popel ka')

    rROM Lest; [Popelka cekalaJ

    EI. SELECT REPLACEC'JACK and JUE', 'J', 'BL') FROM test;

    ~I -UJLACK and BLUEJ

    ~I.

    )YNTAX~

    RICHT

    I=i=, IU G HT( retezec, del ka)

    sJ.

    ,,~ ~l[Ll)j

    '5i .

    IE::: ROUND

    _I, ~NTAX ROUNOCn ,m)

    ~-I

    I -,

    Funkce ROUND vrac hodnotu cs la n zaokrouhlenho na poa-

    1rc=J

    dovan pocet des etinnch mst. Z aokrouhlen s e provede podle

    I

    zn:mch matematickch pravidel. Parametr m ud v pocet plat-

    I~::'~

    nch ms t za desetinnou crkou. Pokud je tento parametr zpor-

    I

    n, kles pocet platnch cslic i pred des etinnou crkou.

    I~ I

    ~1IlIIU.ECT ROlJNOC3.14159) FROM test; [3.00000J

    II l aJ :lInelr m

    =

    -2 znamen zaokrouhlen na stovky.

    I

    J;

    I iI

    /.

    ~T~

    [2002-12-09 19;17;18J

    [20021209191718 J

    SELECT NOW();

    SELECT NOW()

    +

    O;

    NOW

    Funkce NOW vrt aktuln datum ve tvaru RRRR-MM-DD

    HH ;mm:SS nebo R RR RMMD DH HmmSS, pokud pou ijeme

    cselnou konstantu.

    Funkce NEXCDA Y vrt nov datum, vytvoren z puvodnho

    data, kter by pripadlo na nsledujc zadan den v tdnu. Para

    metr den_v_tdnu obsahuje den v tdnu v nastavenm jazyce,

    v naem prpade v cetine.

    SELECT SYSDATE. NEXT_DAy(SYSDATE. 'NEOELE') FROM test;

    NEXT_DAV

    POWER

    F unkce POW ER vrac hodnotu n- t mocniny cs la m.

    SELECT POwERe2,10) FROM test; [1024J

    OUARTER

    jx~t~~ NEXT_DAYCdatum. den_v_tdnu)

    MySQL

    ~~f~i.

    OWe)

    MySQL

    xrt: ME

    QUARTERedatum)

    l~ ~~OWER(m, n )

    Kapitola 8 - Funkce

    t-.=W

    Funkce

  • 5/21/2018 SQL-kniha

    41/49

    80

    RPAD

    ORACLE

    ~rIi,XE RPAD(retezecl. dlka. retezec2)

    Funkce vrt nov retezec, vytvoren z puvodnho retezce rett:

    zec1 tak, e dopln zprava cyklicky se opakujc posloupnost

    znaku danou parametrem retezec2. Nov retezec bude Inl

    dlku danou parametrem dlka.

    SELECT RPAD(jmeno. 20. '*') AS pracovnk FROM pracovnci;

    81

    ') FROM test;

    RTRIM(retezec)

    RTRIM

    I IUICOVN I K

    Funkce RTRIModstran vechny mezery z prav csti (z konce)

    vstupnho retezce.

    Graf mezd

    Novdk MarLin********

    Kernovu ana

    Koumal PeLr*********

    Zou~ck Miroslav*****

    II cl1i1()ana**********

    Novak Martin

    Kernova Jana

    Koumal Petr

    Zoubek Miroslav

    Ticha Jana

    I ullkce je uitecn hlavne pro kreslen prehlednch vodorov

    nch sloupcovch grafu v textovm mdu.

    Potkbujeme jen nahradit cselnou hodnotu retezcem proporci

    oll: ln dlky, sloenm z prslunch znaku, naprklad hvezdi

    cek. Pokud bychom tento pomer nechteli stanovit fixne, ale

    vdy jej vypoctat tak, aby maximln hodnota predstavovala

    sloupec o rce 50 znaku, pouijeme vnoren dotaz SQL. Zby

    tek je u jednoduch matematika.

    SELECT RPAD(jmeno.20) I I RPAD(' 50* mzda

    (SELECT MAX(mzda) FROM pracovnici), '*') AS Graf mezd

    -'FROM pracovni ci;

    SELECT RTRIM( 'Za textem je 5 mezer

    -'[Za textem je 5 mezerJ

    EU

    E~

    I

    ~:a

    I

    ~I iiI

    -

    IF=I

    a

    l.Ja

    rJiG

    tEto

    J.Jm[l 1

    ~:=I U-

    -=1

    (I==i

    1 l

    a

    1Er

    1(1

    ~=ii l1

    ~::ii

    JNTAXE

    I=f: ilI

    1,,--11

    Dm

    II

    IS;--II

    II

    I-=- II ~

    ~

    I~~N ~

    II

    [1500J

    ROUND

    SELECT ROUND(1492,-2) FROM test;

    ORACLE

    i~JA[~

    ROUND(datum, zaokrouhlen)

    Funkce ROUND vrt zaokrouhlen datum. Pokud nezadme

    parametr zaokrouWen, zaokrouhluje se na cel dny.

    Parametr zaokrouhlen urcuje, na jakou casovou dobu bude

    datum zaokrouhlen, naprklad;

    YEAR -

    zaokrouhlen na cel roky (od l.cervence se zao

    krouhluje nahoru),

    MONTH - zaokrouhlen na cel mesce (od 16. se zaokrouhlu-

    je nahoru),

    DDD -

    zaokrouhlen na cel dny,

    DA Y - zaokrouhlen na prvn den v tdnu,

    HH -

    zaokrouhlen na cel hodiny,

    MI - zaokrouhlen na cel minuty.

    SELECT SYSDATE, ROUND(SYSDATEJ FROM test;

    -'[24.11.2002 21;13;44 25.11.2002 OO;OO;OOJ

    Funkce

    Kapitola 8 - Funkce

    E;.

  • 5/21/2018 SQL-kniha

    42/49

    82

    SICN

    83

    153000.00

    SUM( [D ISTINCTIALLJ vraz )

    gregacn funkce SUM vrt soucet hodnot v mnoine daju.

    51: I. I:CI SUM(mzda) AS Mzdy cel kem FROM pracovn ic i:

    Funkce SUBSTRING vrt podmnoinu vstupnho retezce, kter

    je urcen zactkem a poctem znaku.

    SI~I.ECT SUBSTRING( 'Jozefina K.ristina Novakova' .10.8)

    - RDM test; [KristinaJ

    13371.611720357423

    SURSTRING(fetzec. zacatek, dlka)

    SUM

    St.i1llllardni odchyl ka mzdy

    Sl N( II)

    Jltll1lm.:

    SIN

    vrt hodnotu goniometrick funkce sinus, kde

    p;lr:lIl1elr n je hel v radinech.

    ~;III:CI 5IN(PI()/4) FROM test; [0.70710678118654746J

    IIwly col kelll

    SUBSTRINC

    STDEV

    STD[V([DISTlNCTIALLJ vraz)

    gregacn funkce STDEV vrt standardn odchylku (odmocninu

    t vari:lI1ce) pro skupinu zznamu.

    ~;L I. LCI STDEVCmzda) AS Standardni odchy lka mzdy FROMpracovni ci

    SIN

    E ~

    e: G

    I

    SYN IAXE

    E,Q

    I

    ~I

    gJa1l

    ~ a

    e GHAX~

    I

    E, GI

    I

    Jmz;JJJ

    'CI

    ~ 61111m

    lEn(I

    IE ~J

    (I

    I ,

    (~.I (lITAXE

    ~~I:

    ]I

    ie: 'rl

    ~Ja

    (E'-J

    .fAXE

    (E; h

    I~: am

    -II

    I

    ~':-I

    (~- ;a

    I

    [59J

    ELECT SECONO(' 11: 35: 59' );

    SESSOINTIMEZONE

    SECOND

    ORACLE

    ~ ij~~ESSIONTIMEZONE

    Funkce SESSIONTIMEZONE vrt nastavenou hodnotu casov

    ho posunu pripojen (session) oproti svetovmu casu GMT.

    SELECT SESSIONTIMEZONE FROM test; [+01:00J

    SEC_TO_ TIME

    MySQL

    ~ ~I~.

    SECTO_TIMECpocet sekund)

    Funkce SEC_TO_TIME prevede pocet sekund od pulnoci na

    prslun cas. Vsledek vrt ve tvaru 'HH-MM-SS' nebo

    HHMMSS, pokud pouijeme cselnou konstantu.

    SELECT SEC_TO_TIME(3000); [00;50;00J

    SELECT SEC_TO_TIME(3000)+ o [005000J

    MySQL

    Iijf~~SECOND(cas)

    Funkce SECOND vrt hodnotu sekund ze zadanho casu.

    ijf~g

    SIGN(n)

    Funkce SIGN ns informuje o znamnku csla n. Pro kladn csla

    vrac 1, pro nulu vrac O a pro zporn csla vrac hodnotu -I.

    SELECT SIGN(-5) FROM test; [-IJ

    SELECT SIGN(O) FROM test; [OJ

    SELECT SIGN(5) FROM test; [IJ

    Kapitola 8 - Funkce

    I

    Funkce

  • 5/21/2018 SQL-kniha

    43/49

    84

    MySQL

    st~f~ SYSDATE()

    ORACLE

    ~f~( SYSTIMESTAMP (presnost)

    85

    [41759J

    [0.99999999999999989J

    ORACLE

    TO_DATE

    TAN( II)

    I-' l l1kc

  • 5/21/2018 SQL-kniha

    44/49

    SELECT TO_DATE( 25.12 .1998 13:30:22 ,

    dd.mm.YYYY, HH24:MI:SS ) FROM test;

    nac pro formtovn data a casu vypeme prklad u ns nej

    pouvanejho formtu.

    87

    Meslc vyjdren pomoc trojpsmenn zkratky, kde prvn psme

    no zkratky je velk

    Mescvyjdren celm jmnem velkmi psmeny

    Mescvyjdren celm jmnem, kde prvn pismeno jmna je

    velk a ostatn psmena jsou mal

    Mesc vyjdren rmskmi cslicemi

    Kvartl (ctvrtrok)

    Posledni dvojCSlroku

    Rok vyjdren pomoc ctyr cslic

    Symbol pro vyjdren sekund v rozpet mnuty

    Symbol pro vyjdren sekund od pulnoci

    Symbol pro vyjdren tdne v rmci mesce

    Symbol pro vyjdreni tdne v roce

    Symbol pro vyjdren roku seznamnkem, t.j . roky pred nam

    letopoctem maj znamnko -

    Symbol pro slovn vyjdren roku velkmi psmeny

    Symbol pro slovn vyjdren roku, pricem prvn psmeno je

    velk a ostatn psmena jsou mal

    Symbol pro vyjdren posledn cslice roku

    Symbol pro vyjdren poslednch dvou cslic roku

    Symbol pro vyjdren poslednch tr cslic roku

    Symbol pro vyjdren vech ctyr cslicroku

    Symbol pro vyjdren vech ctyr cslic roku scrkou

    Funkce

    TO_DAYS vrt pocet dn od poctku naeho letopoctu.

    SEtICT TO_DMS( 2002-12-09 ); [731558J

    YYYY

    Y,YYYY

    Yei1r

    yyy

    TO_DAYS

    y

    Y R

    yy

    w

    Syyyy

    ww

    RRRR

    SS

    SSSSS

    RM

    Q

    RR

    MONTH

    Mon

    Month

    MySQL

    .YNrAX~

    iO_OflYS(< atum)

    I

    E:.

    I

    I

    ~I

    I

    ~I.

    E

    I

    ~I.

    g

    E

    I;i:

    I;i:

    -

    EE

    IE=

    I~=

    _II

    I~=ii

    fE=-1I

    II

    [~-ii~

    ~~=II

    ill

    Ij:; ~II iiI

    U~

    III

    Popis

    Symbol pro n letopocet bez interpunkcnch znamnek

    Symbol pro n letopocet s interpunkcnmi znamnky

    (Before Christ) symbol pro vyjdren etapy pred nam letopo

    ctem bez interpunkcnch znamnek

    Symbol pro vyjdren etapy pred naim letopoctem s inter

    punkcnmi znamnky

    Vyjdren stoleti ( toto cslo je o jednicku vy ne prvn dvojcsl

    roku)

    Celjmno epochy

    Zkrcen jmno epochy

    Den v tdnu vyjdren slovne velkmi psmeny

    Den v tdnu vyjdren slovne, pricem prvni psmeno slova je

    velk a ostatn psmena jsou mal

    Den v mesci vyjdren cslem

    Den v roce vyjdren cslem, poct se od prvnho ledna

    Den v tdnu vyjdren pomoc trojpsmenn zkratky jmna dne

    Symbol fze dne (dopoledne) bez interpunkce

    Symbol fze dne (dopoledne) s interpunkc

    Symbol fze dne (odpoledne) bez interpunkce

    Symbol fze dne (odpoledne) s interpunkc

    Hodina

    Hoama vyjdren ve 12hodinovm formtu

    Hodina ve 24hodinovm formtu

    Symbol pro Julinsk kalendr

    Symbol pro vyjdren minut v rozpet hodiny

    Mesc vyjdren cslem

    Mesc vyjdren pomoc trojpsmenn zkratky velkmi psmeny

    Symbol

    -

    D

    .D.

    C

    B.C.

    -

    CC

    -

    \

    DAV

    Day

    -

    DD

    DDVM.M.M.M.HHH12-

    H24

    -

    MI

    -

    MMON

    86

    Funkce

    Kapi tola 8 - Funkce

    e:;

    I

  • 5/21/2018 SQL-kniha

    45/49

    ORACLE'

    88

    89

    Naprslun pozici je crka.

    Naprslun pozici je tecka.

    Csloje zobrazen jako hodnota vynsoben 10

    *

    n, kde n j e

    pocet cislic zasymbolem v.

    Csloje zobrazen ve vedeck notaci.

    Csloje zobrazen velkmi rmskmi cslicemi.

    Csloje zobrazen malmi rmskmi cslicemi.

    Csloje zobrazen bez vodnch mezer.

    popis

    ORACLE'

    Funkce TO_LOB prekonvertuje textov datov typy LONG

    ncbo LONG RAW na datov typ LOB. Tuto funkci mueme pou

    t

    jcn v csti SELECTprkazu INSERT INTO.

    TO_ LOB

    symbol

    INSERT INTO new_prinLmedia

    (SELECT p.product_id, p.ad_id, TO_LOB(p.press_release)

    -'FROM pm.print_media p);

    TO_NUMBER

    v

    Rn

    E