10.07.2015 Views

Andmebaasid I - Teema nr. 3 - Tallinna Tehnikaülikool

Andmebaasid I - Teema nr. 3 - Tallinna Tehnikaülikool

Andmebaasid I - Teema nr. 3 - Tallinna Tehnikaülikool

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

TTÜ: Relatsioonialgebra. Sissejuhatus SQL keelde (2012) © Erki EessaarAndmebaasisüsteem leiab sorteerimisjärjekorra lugedes ORDER BY klauslitvasakult paremale.Seetõttu sorteeritakse kõigepealt päringu tulemus osakonna numbri järgi.Ühte osakonda kuuluvad inimesed sorteeritakse perenime järgi tähestikuliselejärjekorrale vastupidises järjekorras. Alates SQL:1999 standardist võivadORDER BY klauslis olla veeru nimed, mis ei esine SELECT klauslis:SELECT perenimiFROM TootajaORDER BY palk;SELECT lause tulemuse võib ka sorteerida kahanevas järjekorras. Sellekstuleb ORDER BY klauslis veeru nime järel kasutada DESC märksõna.SELECT perenimiFROM TootajaORDER BY palk DESC;Kui sorteerimise klauslit ei määrata, väljastatakse read mingis juhuslikusjärjekorras (järjekord sõltub andmebaasisüsteemist ja pole SQL standardipoolt ette kirjutatud).Kuidas sorteerida ridu kui sorteerimise aluseks olevas veerus puuduvadväljades väärtused? SQL standard nõuab, et andmebaasisüsteemi loojadpeavad ise otsustama kas esitada read kus sorteerimisel kasutatavadväärtused puuduvad kõige esimeste või kõige viimastena. Enamikandmebaasisüsteeme lähtub sorteerimisel reeglist NULL on suurem kui NOTNULL väärtused.Teisest küljest on see ebaloogiline, sest NULLi käsitletakse kui väärtust mison siis kas suurem või väiksem teistest väärtustest. Tegelikult aga tähistabNULL väärtuse puudumist.NB! Stringidel põhineva sorteerimise tulemus sõltub kasutatavast märkidevõrdlusreeglistikust (ingl. k. collation). Kui seda sorteerimise klauslis eimäärata, siis kasutab andmebaasisüsteem vaikimisi reegleid. Kuid SQLstandard lubab ORDER BY klauslis määrata kasutatava võrdlusreeglistiku.Näide: Tehke päring töötajate kohta ja sorteerige tulemus saksa keele reeglitejärgi, mis on määratud reeglistikuga "latin1_german1_ci".SELECT *FROM TootajaORDER BY perenimi COLLATE latin1_german1_ci;03. märtsil 2011 Delfi artikkel kirjeldab probleemi, mis tekkis ilmselt valevõrdlusreeglistiku kasutamise tulemusena."Valijanimekirjades kasutatakse eesti tähestiku asemel rahvusvahelistalfabeeti, mistõttu on tavalisest keerulisem neist nimesid üles leida.60

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!