SQL õpetused
Kõikides õpetustes ja näidistes on kasutatavaks platvormiks Microsoft SQL Server 2008.
Andmebaasi ja tabeli loomine. Andmete lisamine
IN, NOT, TOP, Year(), Month(), Between
Andmebaasid – tabelid, võtmed
Andmebaase kasutatakse väga laialdaselt, see võib olla nii telefoniraamat kui ka hinnakiri, laoseis jpm. Andmebaas on võimalus informatsiooni organiseerimiseks. Andmebaasi kasutamine tähendab otsinguid ehk päringuid.
Andmeid hoitakse seotult tabelites. Kui kõnelda andmebaaside terminoloogiast, siis iga tabelirida on üks kirje. Tabel koosneb ridadest ja veergudest. Read on kirjed ja veerud on väljad. Väli on üksik infokogus, mida kogutakse kirje jaoks. Tabeli defineerimiseks tuleb määrata milliseid välju see sisaldab, mis tüüpi see väli on ja kui pikk on iga väli.
Iga tabel sisaldab andmeid ühe objektitüübi kohta. Näiteks, ettevõte, inimene, arve, kaup. Erinevate objektitüüpide andmed kuuluvad eri tabelitesse.
Näiteks ostjate andmed paiknevad ostjate tabelis, seal võiks olla kood, nimi, aadress, telefon. Ostjatele väljastatud arved on arvete tabelis – ostja kood, arve nr, kuupäev, summa.
Tabelite sidumiseks peavad mõlemad tabelid sisaldama ühist välja – näiteks ostja kood on nii ostjate tabelis kui ka arvete tabelis. Enamasti on seos üks mitmele - nt ühele ostjale kuulub mitu arvet. Sellist seotud tabelite süsteemi nimetatakse relatsiooniandmebaasiks. Ühele ostjale võib olla väljastatud mitu arvet.
Seega relatsiooniline andmebaas koosneb paljudest erinevatest andmetabelitest. Iga tabel omab kindlaksmääratud veerge, igal veerul on nimi ja piirangud, milliseid andmeid sinna veergu võib kirjutada.
Tabelitevahelised seosed tekitataksegi relatsioonide abil – erinevates tabelites seostatakse read, mille kindlaksmääratud veergude väärtused langevad kokku.
Igal tabelil on võti – see on veerg, milles sisalduv väärtus on igas antud tabeli reas unikaalne. St. selle võtme abil on võimalik üheselt identifitseerida suvalist rida andmebaasi tabelis.
Võõrvõti on tabeli veerg, mis sisaldab mõne teise tabeli võtmeväärtusi. Relatsioone teostatakse põhiliselt ühe tabeli võtme ja teise tabeli välise võtme (võõrvõtme) veeru kokkuviimisega.
Välja tüüp näitab mis liiki informatsiooni sellesse välja kogutakse, näiteks tekstilist, arvulist või sisestatakse sinna kuupäevad, kellaajad.
Väljatüüpe arvestatakse ka näiteks päringutes, teksti otsinguks peab olema välja tüübiks tekst (char, varchar), agregaatfunktsioone (max(), min(), sum() jt) saab kasutada arvuliste väärtuste korral. Päringukeelt SQL vaatame kohe lähemalt.
SQL
SQL on enamlevinud päringukeel andmebaasidega suhtlemiseks, mis arendati IBM poolt varastel 70-del. Andmetega töötamiseks kasutati selles keelt SEQUEL (Structured English Query Language), mis on SQL keele esimeseks versiooniks. Keelt kirjeldati 1976 a. novembris ajakirjas IBM Journal of R&D. Keelele anti hiljem uus nimi - SQL (Structured Query Language). 70-ndate lõpus nägi Relational Software Inc (praegune Oracle Corporation) loodus potentsiaali ning arendas oma versiooni SQL’st.
1987 - ISO (International Organisation for Standardization) kinnitas SQL standardi esimese versiooni.
1989 – standardiseeris SQL’i Ameerika Rahvuslik Standardiseerimisinstituut (ANSI). SQL muutus vabaks, mitte ühelegi äriühingule kuuluvaks keelestandardiks.
SQL arenes äärmiselt kiiresti just tänu veebibuumile. Kui esimesed veebilehed olid justkui raamatud, siis näiteks e-poodide tulekuga pidi rakendus hakkama kasutajaga suhtlema, hoides kasutajate andmeid ja pakkudes vajaminevat kaupa või kogudes tagasisidet. Kogu selle info kogumise, hoidmise, muutmise ja pärimise jaoks oli vaja andmebaase. Praktiliselt kõik kaasaegsed veebirakendused kasutavad andmebaase. Olgu selleks siis Joomla, Drupal, Wordpress, Type või mõni muu tarkvara.
Nagu öeldud on SQL andmebaasistandard. Kuid iga SQL arendaja lisab juurde täiendavaid omadusi ja seega on tekkinud mitmeid versioone. Enam levinumad andmebaasimootorid on MySQL, PostreSQL, aga ka Microsoft SQL server.
Andmebaasi arenduse etapid
Enne andmebaasi loomist peab väga põhjalikult mõtlema, millist informatsiooni peaksid need tabelid sisaldama. Eelnevalt tuleb läbi mõelda millist infot ja milleks on vaja koguda. Andmebaasist pole kasu, kui sealt vajalikku infot kätte ei saa. Andmebaas peab rahuldama nii hetke- kui ka tulevikuvajadusi, tuleb ette näha ka seda missuguseid välju on edaspidi vaja. Analüüsi tulemusel koostatakse paberil vajalike tabelite struktuur ja määratakse tabelitevahelised seosed.
Kui te alustate oma ettevõttes või kellelegi teisele andmebaasi loomist, siis tavaliselt tasuks lähtuda tarkvara arenduse klassikalisest elutsüklist, mille esimeseks etapiks on eeluuring. Te peate teadma ja aru saama kliendi vajadustest, nõuetest ning oskama neid nõudeid arusaadavalt kaardistada. Hea oleks teada ka turul olevaid analoogseid rakendusi, et oleks võrdlusmoment ning teaks nö konkurentide häid ja halbu külgi.
Analüüsi etapis peab olema kindlaks tehtud nii kasutaja vajadused kui ka tarkvara valik. Te peate olema kindlad, et räägite nii tellijaga või kasutajatega ühist keelt. Väga tihti ei tea ka kasutajad ise mida nad täpselt tahavad ja samuti ei oska arusaadavalt ennast väljendada, sest rakenduse looja peab täpselt aru saama nii tabeli struktuuridest, omavahelistest seostest kui ka vajaminevatest päringutest.
Näiteks raamatupidamisele võib selge olla, et akadeemilisel puhkusel olevate üliõpilaste käest õppemaksu ei küsita ja üliõpilased, kes arvatakse poole õppeaasta pealt tasuta õppesse, peavad aastamaksust pool tagasi saama – kõike seda peab raamatupidamisele tehtav rakendus arvestama, aga kõik programmid nii head kui halvad teevad siiski vaid seda, mida eelnevalt programmeerija on käskinud teha. Seega väikestes rakendustes tuleb rääkida sageli nii tellijaga kui ka kasutajatega.
Realisatsiooni ja disaini etapp on kõige töömahukam osa. Siin selgub vana tõde, et mida rohkem on eelnevas analüüsi osas mööda pandud, seda raskem on kliendi nõuetele vastavat lahendust luua ehk siis väike viga analüüsi osas, on väga kulukas realisatsiooni osas.
Järgmiseks etapiks on testimine, mille käigus peaks nägema nii rakenduse töökindlust kui ka kasutamismugavust. Kas lingid töötavad, kas kujundus meeldib, kas kasutajaliides on arusaadav.
Juurutamine on süsteemi töösse rakendamine ja siin ilmneb veel hulk kasutajapoolseid ettepanekuid – neid saab siis mõistlikkuse piires arvestada.
Uuendamine on etapp, mille käigus lisatakse vajaminevaid mooduleid või alamlehti. Kasutajate vajadused ning nõuded muutuvad ning tarkvaraline rakendus peab ajaga kaasas käima.
Näitena andmebaasi tellija ja teostaja vahelisest suhtlusest on järgmine slaidiseeria ühest lasteraamatust (autor teadmata).
|
Ettevõttes mõeldi, et oleks vaja pildil olevat rakendust. |
Vajaminev rakenduse nõuded kirjutati kokku ning esitati tellimus. |
Konkursi võitnud firma projekteeris lahenduse. |
|
|
![]() |
|
|
Tellimuse põhjal loodud projekt |
Testijad testisid – ei töötanud, |
Tegelikult soovis ettevõte sellist rakendust. |
Seega suhtlemine teostaja ja tellija vahel on ülioluline, eelkõige on tähtis rääkida sama keelt. Andmebaasi kasutamine tähendab tavaliselt päringute tegemist. Päringukeelena on laialt levinud SQL (Structured Query Language), mis on kujunenud standardiks.
Eve Keerus-Jusupov
02. oktoober 2009








