5 SQL päringukeel ja tabeli loomine

Selleks, et andmebaasidesse tabeleid luua, andmeid lisada, modifitseerida, kustutada ning vajalikke andmeid andmebaasist kätte saada ehk pärida, kasutatakse peamiselt päringukeelt SQL (ingl Structured Query Language). SQL on loodud IBM poolt aastal 1974.

SQL lause süntaks tabeli loomiseks

Tabeli loomise SQL lause üldkuju on järgnev:

  • CREATE TABLE <tabeli nimi> ( ... );

Sulgudes oleva osa asemele tulevad komaga eraldatud veergude definitsioonid ning seejärel tabeli üldised kitsendused. Tabeli kitsendusi me selles peatükis ei vaata, seega jätame need esialgu SQL lausest välja.

Veeru definitsioon on järgneval kujul:

  • <veeru nimi> <veeru andmetüüp> [vaikeväärtused] [veeru kitsendused]

Siin tähistavad nurksulud mittekohustuslikku osa.

Vaikeväärtustest ning veeru kitsendustest räägime me hilisemates peatükkides täpsemalt, kuid siiski on kaks veeru kitsendust, mis võiksid kohe alguses tuttavad olla. Esimeseks on NOT NULL, mis tähendab, et antud veeru väärtus ei tohi kunagi tühi olla. Teiseks oluliseks kitsenduseks on PRIMARY KEY, mille abil saame me öelda, et antud veerg on primaarvõti.

Loome SQL lause tabeli Inimesed jaoks

Proovime nüüd koos koostada ühe tabeli loomise SQL lause.

Olgu ülesandeks luua tabel Inimesed, mis peab peab sisaldama id-d, eesnime, perekonnanime ning sünnipäeva. Kusjuures id peab olema primaarvõti ning ühegi tabelis oleva veeru väärtus ei tohi olla tühi.

Paneme kõigepealt paika lause kuju ilma veeru definitsioonideta.

  • CREATE TABLE Inimesed ( ... );

Nüüd koostame iga veeru definitsioonid.

Kuna veerg id peab olema primaarvõti ning selle väärtus ei tohi kunagi tühi olla, kasutame kitsendusi PRIMARY KEY ning NOT NULL. Eelmises peatükis rääkisime, et primaarvõtmete korral oleks alati otstarbekas kasutada andmetüüpi serial.

Pannes kõik kokku, saame veeru id jaoks järgneva veeru definitsiooni:

  • id SERIAL PRIMARY KEY NOT NULL

Veergudel eesnimi ning perekonnanimi on tekstilised väärtused.  Ilmselt võime ka öelda, et nii ees- kui ka perekonnanime pikkus on maksimaalselt 50 tähemärki. Seega nende veergude andmetüübina kasutame varchar (50). Kuna ülesande püstituses on öeldud, et ükski veerg ei tohi lubada tühja väärtust, lisame ka neile veeru definitsioonidele kitsenduse NOT NULL.

Seega veergude eesnimi ja perekonnanimi jaoks saame me järgnevad definitsioonid:

  • eesnimi VARCHAR (50) NOT NULL
  • perekonnanimi VARCHAR (50) NOT NULL

Kuna veerg sünnipäev hoiab endas kuupäeva, tuleks andmetüübina kasutada date andmetüüpi. Ka sellele veerule tuleb lisada kitsendus NOT NULL.

Seega veeru sünnipäev definitsiooniks saame:

  • sünnipäev DATE NOT NULL

Kui me nüüd kõik eelneva kokku paneme, saame:

  • CREATE TABLE Inimesed (
    id SERIAL PRIMARY KEY NOT NULL,
    eesnimi VARCHAR (50) NOT NULL,
    perekonnanimi VARCHAR (50) NOT NULL,
    sünnipäev DATE NOT NULL
    );

Tabelite loomine DBeaveris

Nüüd on lõpuks kätte jõudnud aeg, kui saame eelnevalt installitud tarkvara kasutama hakata. Kui teil ei ole vajalik tarkvara installitud või miski ei tööta, läbige käesoleva õpiku teine peatükk.

Et DBeaver ei muudaks meie SQL lausetes olevaid suurtähti automaatselt väiketähtedeks, peame me muutma ühte sätet. Selleks tuleks esmalt käivitada DBeaver ning seejärel avada DBeaveri ülal menüüs Window -> Preferences.

Seejärel avaneb Preferences aken, kus liigu vasakul menüüs Editors -> SQL Editor -> Code Editor ning vaata, et valik Convert keyword case ei oleks valitud. Seejärel klikka nupul Apply and Close.

Nüüd proovime lisada DBeaveris olevasse public andmebaasi tabeli Inimesed, mille loomise jaoks me äsja SQL lause moodustasime.

Selleks tuleb DBeaveris avada Projects menüü, kui see juba lahti pole (Window -> Projects). Seejärel tuleb avada SQL konsool, kuhu me saame sisestada SQL lauseid ning neid seejärel käivitada. Selle avamiseks liigu ülal menüüribal SQL Editor -> Open SQL console.

Nüüd lisame avanenud konsooli varasemalt koostatud SQL lause tabeli Inimesed loomiseks. Kontrolli, et SQL lauses ei esineks tühju ridu, vastasel juhul saad veateate. Seejärel tuleb vajutada oranži play-nuppu (asukoht toodud välja alloleval pildil), et konsooli kirjutatud käsk käivitataks.

Pärast seda peaks vasakul menüüs tabelite all olema nähtaval tabel Inimesed.

NB! Kui loodud tabel ei ole nähtaval, proovi andmebaasi vaadet värskendada. Selleks parem klikka andmebaasi public peal ning avanenud valikutest klikka Refresh. 

Kui tabel Inimesed on nähtaval, siis topelt klikka sellel. Nüüd peaks avanema vaade Properties tabeli Inimesed kohta käiva informatsiooniga. Nagu näha, siis seal on olemas meie täpsustatud veerud ning nende andmetüübid. Samuti on näha, et iga veeru korral on kitsendus NOT NULL valitud.

Hiljem, kui me hakkame tabelisse andmeid lisama, kajastuvad need Data vahelehe all. Iga sisestatud kirje ilmub seal eraldi reale. Võid ka praegu Data vahelehte uudistada, kuid kuna me pole veel tabelisse Inimesed andmeid sisestanud, pole seal ühtegi kirjet näha.

Paslik oleks praegusel hetkel tutvuda ka SQL lausega, mille abil on võimalus andmebaasist tabeleid kustutada. Selleks on:

  • DROP TABLE <tabeli nimi>;

Ehk siis juhul, kui teil edaspidistes ülesannetes midagi sassi läheb, on alati võimalus tabel kustutada ning uuesti proovida.

Iseseisev ülesanne

Proovi nüüd ise DBeaveris lisada tabel Toode, millel on järgnevad veerud:

  • id
    • andmetüübiga serial
    • primaarvõti
    • ei luba tühjasid väärtusi
  • nimi
    • andmetüübiga varchar (100)
    • ei luba tühjasid väärtusi
  • hind
    • andmetüübiga numeric
    • ei luba tühjasid väärtusi
  • lisamiskuupäev
    • andmetüübiga date
    • ei luba tühjasid väärtusi
  • aegumiskuupäev
    • andmetüübiga date
    • ei luba tühjasid väärtusi

Selleks koosta esmalt korrektne SQL lause tabeli loomiseks (oma lahendust saab kontrollida alloleva vastuse abil). Kui SQL lause on korrektne, jooksuta seda DBeaveri SQL konsoolis. SQL konsoolile saab tagasi liikuda vajutades alloleval pildil näidatud vahekaardile. Kui SQL konsooli vahekaart pole pildil näidatud kohas nähtaval, saad selle uuesti avada (SQL Editor -> Open SQL console).

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