14 Andmebaasi importimine ja uurimine ning päringute piiramine

DBeaveri projektide importimine ja eksportimine

Selleks, et kiiresti ja lihtsasti suurt andmebaasi üles seada, on hea kasutada DBeaveri projektide importimise ja eksportimise võimalust.

Kuigi DBeaveris on importimise ja eksportimise sammud omavahel väga sarnased, vaatame igaks juhuks üle mõlemad neist. Alustame importimisest, sest seda läheb peatselt vaja, saaksime edaspidi suures Netflixi teemalises andmebaasis töötada. Seejärel vaatame ka eksportimist, mida võib vaja minna näiteks siis, kui tahad oma andmebaasi õpetaja või tiimikaaslasega jagada.

Enne importimist lae imporditava andmebaasi projekti fail alla siit.

Projektisisene andmebaas sisaldab töödeldud andmeid, mis on pärit siit andmestikust. Huvi korral võib ka algandmeid uurida, kuid neid siinkohal kasutama ei pea.

DBeaveri projektide importimine

Olemasoleva DBeaveri projekti failist importimiseks tuleb kõigepealt avada DBeaver. Seejärel tuleb DBeaveris ülevalt vasakult valida vaade Projects (mitte Database Navigator).

Järgmisena vali DBeaveri aknas ülevalt menüüst FileImport nagu on näidatud alloleval pildil.

Avanenud aknas kliki kaustale DBeaver ning seejärel selle alamkaustale Project. Lõpuks kliki nupule Next.

DBeaver'is importimise teine samm

Järgmises vaates täpsusta esmalt imporditava projekti faili asukoht. Seejärel märgi imporditav projekt valituks (veerus Original Name) ning määra sellele ka meeldiv nimi (veerus Target Name), soovitatavalt kujul Netflix_Perekonnanimi. Lõpuks kliki nupule Finish.

DBeaver'i projekti importimise kolmas samm

Nüüd on Netflixi andmebaasi sisaldav projekt failist imporditud, kuid on jäänud veel kontrollida, kas kõik ka töötab.

Kontrolli, kas pääsed projekti sisule ligi. Kui pääsed, siis järelikult ühendus serveriga töötab ning oled edukalt projekti importinud. Kui ei pääse, tuleb ilmselt muuta ühenduse seadeid. Ühendusega tekib probleeme peamiselt vaid siis, kui projekt on eksporditud ühest operatsioonisüsteemist ning seejärel seda imporditakse teises operatsioonisüsteemis.

Projekti serveri ühenduse seadeid saab muuta nii nagu alloleval pildil ehk tehes paremklikk ühenduse postgres peale ja valides Edit Connection.

DBeaver'i projekti ühenduse seadete avamine

Pane tähele, et ülaloleval pildil ühendus juba töötab. Seda näeb selle järgi, et ühenduse postgres ikooni juures on roheline linnuke. Samuti on näha, et projekt on paksus kirjas. Seda, mida see tähendab, vaatame natuke hiljem.

Kui on tarvis ühenduse seadeid muuta, määra need nii nagu on näidatud sinu operatsioonisüsteemile vastavas DBeaveri esimese käivitamise juhendis.

Nüüd oled edukalt DBeaveri projekti failist importinud.

DBeaveri projektide eksportimine

Vaatame tuleviku tarbeks ka seda, kuidas projekte eksportida. Hetkel pole aga järgnevaid samme tarvis kaasa teha.

Olemasoleva DBeaveri projekti eksportimiseks faili tuleb kõigepealt avada DBeaver. Seejärel tuleb DBeaveris ülevalt vasakult valida vaade Projects (mitte Database Navigator).

Järgmisena vali DBeaveri aknas ülevalt menüüst FileExport nagu on näidatud alloleval pildil.

DBeaver'i projekti eksportimise esimene samm

Avanenud aknas kliki kaustale DBeaver ning seejärel selle alamkaustale Project. Lõpuks kliki nupule Next.

DBeaver'i projekti eksportimise teine samm

Järgmises vaates märgi eksporditav projekt valituks ning määra eksporditavale failile meeldiv nimi (väli Output file), näiteks kujul Netflix_Perekonnanimi_eksport ja asukoht (väli Directory). Lõpuks kliki nupule Finish.

DBeaver'i projekti eksportimise kolmas samm

Nüüd oled edukalt DBeaveri projekti faili eksportinud.

Netflixi andmebaasi seadistamine ja uurimine

Nüüdseks peaks Netflixi andmebaas olema imporditud, kuid jäänud on veel teha mõned seadistused.

Pärast importimist tuleks imporditud projekt määrata vaikeprojektiks. Hetkeseisuga on vaikeprojektiks ilmselt General, seetõttu on selle nimi ka paksus kirjas. Projekte saab määrata vaikeprojektiks Projects. Selleks tuleb teha parema klikk projekti nime peal ja valida Set Active Project.

Seejärel ava Projects vaates järjest imporditud projekti alamenüüsid kuni näed kõiki skeemasid (alamenüü Schemas all) ning määra skeema netflix_algne vaikeskeemaks. Selleks tee parem klikk skeema nime peal ja vali Set as default. Tõenäoliselt tuleb seda sammu korrata igal DBeaveri käivitamisel.

Tulevaste importimise ja eksportimisega seotud probleemide vältimiseks on soovitatav skeema netflix_algne ümber nimetada kujule netflix_perekonnanimi. Selleks tee skeema netflix_algne peal parem klikk ja vali Rename, sisesta enda perekonnanimele vastav nimi ning vajuta OK ja seejärel Persist.

Segaduse vältimiseks kustuta siinkohal ära algne projekt nimega General. Selleks tee projekti peal paremklikk ja vali Delete. Soovi korral võib projekti enne kustutamist harjutamise nimel ka faili eksportida.

Tasub teada, et DBeaver ei luba vaikeprojekti kustutada. Seega, kui tekib probleeme projekti General kustutamisega, on see ilmselt siiani vaikeprojektiks jäänud.

Nüüd olemegi Neftlixi andmebaasi DBeaveri projekti abil importinud ning seejärel korrektselt üles seadnud.

Järgmine samm on tutvuda meie uue andmebaasiga, millega töötame mooduli lõpuni. Selleks on DBeaveri abil soovitatav põhjalikult uurida kõiki andmebaasis olevaid tabeleid, kasutades selleks üleeelmises peatükis õpetatut.

Uuri nii tabelites olevaid tunnuseid, nende andmetüüpe kui ka tabelis olevaid andmeid üldiselt. Proovi mõista, mida iga tunnus tähendab ning ka seda, milliseid andmeid see andmebaas üldse hoiustab. Mida paremini sa andmebaasi olemust mõistad, seda lihtsam on hiljem päringuid looma hakata.

Kui jääd hätta andmebaasi ülesehituse, andmetüüpide jm mõistmisega, vaata üle erinevaid eelmise mooduli peatükke.

Päringute piiramine

Jätkame nüüd päringute osaga ning vaatame täpsemalt, kuidas kasutada piiranguid keerukamate päringute loomisel.

Päringuid on vaja piirata selleks, et kontrollida päringute tulemustesse jõudvate kirjete arvu. Kui tabelis võib algselt olla mitu tuhat kirjet, on päringute piiramise abil võimalik tulemusi kitsendada nii, et alles jääb vaid üksainus huvipakkuv kirje.

Tavapäraste päringute piiramiseks kasutatakse SQL-s märksõna WHERE. Hilisemates peatükkides vaatame ka üht teist märksõna, mida kasutatakse eripärasemate päringute piiramiseks.

Märksõna WHERE ja sellele järgnev piirangut täpsustav osa käib seniõpitud päringulause kuju lõppu.

Näiteks, kui soovime leida kõigi tabelis Riigid olevate riikide kõiki andmeid, kasutaksime selleks järgmist päringut:

  • SELECT * FROM riigid;

Selleks, et näha andmeid vaid Soome kohta, kasutaksime aga märksõna WHERE eelmisele päringule lisaks järgnevalt:

  • SELECT * FROM riigid WHERE nimi = 'Finland';

Katseta ka ise eelnevat kahte päringut, võrdle nende tulemusi ning proovi piiramist ka teiste riikide nimede alusel.

Meeldetuletuseks, jutumärkide paari asemel kasutatakse siinkohal alati ülakomade paari. Kuna jutumärkide ekslik kasutamine võib anda kohati arusaamatuid veateateid, on seda kasulik meeles pidada.

WHERE on võimas märksõna selle poolest, et sellele järgnevaid piiranguid saab määrata väga paljudel erinevatel alustel. Eespool näidatud võrdusmärk ei ole ammugi ainus piiramisel kasutatav operaator. Näiteks, võimalik on kasutada ka matemaatikast tuttavaid operaatoreid <, >, <=, >= ja <> ehk != (mitte võrdne).

Nimetatud operaatoreid saab kasutada nii sõnede kui ka arvude võrdlemisel. Kui neid kasutada arvuliste väärtustega, siis ülakomasid arvude ümber ei panda.

Näiteks järgmine päring piirab tulemusi riikide pindala ehk arvulise väärtuse alusel:

  • SELECT * FROM riigid WHERE pindala < 10000;

Märksõnale WHERE järgnevat avaldist saab ka loogiliselt vastupidiseks pöörata, kirjutades WHERE asemel WHERE NOT. Kuigi üldjuhul on samaväärse tulemuseni lihtne jõuda kirjutades näiteks operaatori = asemel !=, võib märksõna NOT kasutamine olla mõnes olukorras isegi loomulikum või ka kiirem, kui piiranguid on mitu.

Märksõnale WHERE võib järgneda ka mitu avaldist, mida eraldatakse omavahel märksõnadega AND või OR. Märksõna AND tähistab seda, et mõlemal pool märksõna olevad avaldised peavad olema tõesed. Märksõna OR tähistab aga seda, et vähemalt üks märksõna vasakul või paremal poolel olevatest avaldistest peab olema tõene. Mõlemat märksõna võib kasutada ka rohkem kui ühe korra.

Näiteks järgneva päringu tulemuses on kõigi riikide nimed, milles on üheaegselt rahvastikuarv üle 4 miljoni, milles internetti kasutab alla 50% elanikkonnast ning mille pindala on üle 1000000 km2:

  • SELECT * FROM riigid WHERE rahvastikuarv > 4000000 AND interneti_kasutajad < 50 AND pindala >= 1000000;

Märksõna WHERE järel on võimalik kasutada ka päringulausete kirjutamist lihtsustavaid abimärksõnu nagu IS, IN ja BETWEEN.

Märksõna IS ja selle vastandit IS NOT on võimalik kasutada selleks, et leida, kus on või just ei ole tunnuse väärtused puudu. Näiteks järgneva päringu tulemuses on kõigi selliste teoste pealkirjad, mille loomise riik on teadmata:

  • SELECT pealkiri FROM teosed WHERE riigi_id IS NULL;

Kui ülemises päringus kirjutada IS asemel IS NOT, saaksime vastupidiselt kõigi selliste teoste pealkirjad, mille loomise riik on teada.

Märksõna BETWEEN saab kasutada selleks, kui tahta piirata mingit tunnust kahe väärtuse vahel. Näiteks on kaks järgmist päringulauset sisult võrdsed, kuid märksõna BETWEEN kasutav lause on lühem ning lihtsamini loetav:

  • SELECT pealkiri, valjalaske_aasta FROM teosed WHERE valjalaske_aasta BETWEEN 2016 AND 2018;
  • SELECT pealkiri, valjalaske_aasta FROM teosed WHERE valjalaske_aasta >= 2016 AND valjalaske_aasta <= 2018;

Pane tähele, et BETWEEN 2016 AND 2018 tähendab sisuliselt matemaatikast tuttavat lõiku [2016, 2018], mitte aga vahemikku (2016, 2018).

Märksõna IN saab kasutada selleks, et vaadelda, kas tunnuse väärtus sisaldub etteantavas listis. Ka järgmised kaks päringulauset on sisult võrdsed, kuid märksõna IN kasutav lause on taaskord lühem ning lihtsamini loetav:

  • SELECT pealkiri FROM teosed WHERE riigi_id IN (22, 73, 74);
  • SELECT pealkiri FROM teosed WHERE riigi_id = 22 OR riigi_id = 73 OR riigi_id = 74;

Tasub teada, et märksõna NOT on võimalik ka märksõnadega BETWEEN ja IN kombineerida, kirjutades vastavalt NOT BETWEEN ja NOT IN.

Kõige paindlikum ja mitmekülgsem märksõnaga WHERE kokku käiv märksõna on LIKE. Lihtsalt öeldes on selle abil võimalik kontrollida tunnuste väärtuste sarnasust sellega, mida LIKE järel täpsustatakse.

Jooksuta järgmiseid päringuid, võrdle nende tulemusi ning mõtiskle, kuidas ja miks need nii töötavad:

  • SELECT nimi FROM isikud WHERE nimi LIKE 'Kim%';
  • SELECT nimi FROM isikud WHERE nimi LIKE '%Kim';
  • SELECT nimi FROM isikud WHERE nimi LIKE '%Kim%';

Jooksuta järgmist päringut (pärast Kim’i on 6 alakriipsu) ja mõtiskle, kuidas see töötab ning mille poolest see eelnevast kolmest päringust erineb:

  • SELECT nimi FROM isikud WHERE nimi LIKE 'Kim_______';

Protsendi märke ja alakriipse on pärast märksõna LIKE esinevas sõnes võimalik ka kombineerida.

Nüüd oleme õppinud, kuidas Netflixi andmebaasi DBeaveri projekti abil importida ning ka seda, kuidas suures andmebaasis päringuid teha ning neid piirata. Seega saame hakata õppima, kuidas kasutada aritmeetilisi tehteid ja funktsioone veeruavaldistena, mille käigus kasutame kõike seni õpitut.

 

 

 

 

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Lisamoodulid on loodud Aveli Klaos, Siim Tanel Laisaar, Piret Luik, Tauno Palts, ja Eero Ääremaa poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut