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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

TTÜ: Relatsioonialgebra. Sissejuhatus SQL keelde (2012) © Erki EessaarTagastab FALSE kui ükski tõeväärtustest polnud TRUE. Any(veerg), Any(ALLveerg) ja Any(DISTINCT veerg) on samaväärsed.Veel hilisemates SQLi versioonides on lisandunud näiteks kagrupifunktsioonid dispersiooni ja standardhälbe arvutamiseks.Näide: Leia töötajate arv (ridade arv tabelis Tootaja).SELECT Count(*) AS ridade_arvFROM Tootaja;SELECT Count(1) AS ridade_arvFROM Tootaja;NB! SQL lubab kirjutada ka päringu:SELECT Count(*)FROM Tootaja;Selle päringu tulemuseks olevas tabelis on üks veerg kuid selle veeru nimi o<strong>nr</strong>ealisatsioonist (andmebaasisüsteemist) sõltuv. Andmebaasisüsteemideloojatel sellise veeru nimetamise osas vabad käed, ning nad ei ole kohustatudoma valikut isegi dokumenteerima. Hea praktika on, et päringu kirjutajadannavad sellistele veergudele ise nimed.Juhul, kui tabelis Tootaja on ühe töötaja andmed mitmekordselt, siistulemuseks ei ole töötajate arv. See päring kogub andmeid tabeli kõikidestridadest, kuid väljastab ainult ühe rea – ridade arvu. Kui see päring teha tühjatabeli (tabel kus pole ühtegi rida) põhjal, siis tulemuseks on "0".Täpsemalt öeldes on päringu tulemuseks tabel, kus on üks rida ja üks veergning selle tabeli ainsas väljas on väärtus 0.Mõnikord väidetakse, et järgnevad kaks päringut on samaväärsed:SELECT Count(*) AS ridade_arv FROM Tootaja;SELECT Sum(1) AS ridade_arv FROM Tootaja;See ei ole õige väide. Vaatleme piirjuhtu. Kui tabelis Tootaja on 0 rida, siis onCount funktsiooni kasutava päringu tulemuseks väärtus 0. Samas Sumfunktsiooni kasutav päring annab tulemuseks NULL.Date (2009) märgib, et SQL standardi kohaselt on järgnevad kaks päringutsamaväärsed.SELECT Count(*) AS ridade_arv FROM Tootaja;SELECT Count(*) AS ridade_arv FROM Tootaja GROUP BY ();Date (2009) kohaselt märgitakse SQL standardi kirjelduses, et GROUP BYklausel, kus ei ole nimetatud ühtegi veergu, on samaväärne GROUP BYklausli ärajätmisega.64

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

Saved successfully!

Ooh no, something went wrong!