Arvutiteaduse instituut
  1. Kursused
  2. 2024/25 kevad
  3. Andmebaasid (LTAT.03.004)
EN
Logi sisse

Andmebaasid 2024/25 kevad

  • Kursuse korraldus
  • Loengud
  • Praktikumid
  • Kodulugemised (autorid: Margus Roo ja Piret Luik)
  1. Kuidas teha oma andmebaasist backup'i
  2. Päringulause (algus)
  3. Andmetüübid
  4. Päringulause (jätk)
  5. Alampäringud
  6. Operaatorid UNION ja JOIN
  7. Tabelite loomine ja välisvõti
  8. Vaadete loomine
  9. Vaadete muutmine ja vaate kaudu põhitabeli andmete muutmine
  10. Funktsioonide loomine
  11. Protseduuride loomine
  12. Indeksite loomine
  13. Trigerite loomine
  • Rühmatöö

Alustuseks vaadake üle allolev nimekiri lausete tähistustest, et SQL lausete üldkujust paremini aru saada.

SQL lausete tähistused:

  • < > ümbritsevad nimesid
  • [ ] mittekohustuslik osa
  • { } kohustuslik grupeeritud osa – kõik mis nende vahel on, peab SQL lauses olemas olema
  • | alternatiivide eraldaja, üks alternatiiv tuleb valida
  • ... kordus
  • := see on (defineerimiseks)
  • suurtähed - SQL keele reserveeritud sõnad
  • väiketähed - muutujad (nimed, literaalid)

Päringud

Tabelites loodud andmeid on vaja ka kuidagi vaadata. Üks moodus andmete vaatamiseks oleks kasutada DBeaveris tabeli 'Data' vaadet. See lahendus ei ole aga väga sobilik, kui me otsime mingeid kindlaid kirjeid tabelist ning meie tabelis on tuhandeid ridu. Parem oleks kasutada lahendust, mis otsib meie eest tabelist ridu, mis meid huvitavad ning kuvab neid meile. Selleks pakub SQL võimalust pärida tabelitest andmeid SELECT käsuga. Selles materjalis vaatamegi SELECT lause erinevaid osi. Kuna päringulause SELECT on üks pikemaid lauseid SQLis, mis koosneb erinevatest osadest, kus järjekord on oluline, siis paneme selle lause kokku ositi. Tervikliku lause näited on õppematerjalis Päringulause (jätk).

SELECT lause

Esimeses praktikumis käsitlete kõige lihtsamaid päringuid.

SELECT */{<veeruavaldised>}
FROM {<tabel>}
[WHERE {<tingimus>}];

Näited kõige lihtsamatest päringutest on:
Soovides väljastada kõiki kirjeid ja kõiki tunnuseid:

SELECT * FROM isikud; 

Soovides väljastada ainult ees- ja perenime kõikide kirjete korral:

SELECT eesnimi, perenimi FROM isikud; 

Soovides väljastada ainult erinevad eesnimed kõikide kirjete korral:

SELECT DISTINCT eesnimi FROM isikud; 

Soovides väljastada ainult ees- ja perenimed kõikide meessoost isikute korral:

SELECT eesnimi, perenimi 
FROM isikud
WHERE sugu='m'; 

Päringutulemust kitsendavaid tingimusi võib ka olla enam, näiteks kui soovime väljastada nende isikute ees- ja perenimesid, kes on meessoost ja kelle ränking on enam kui 2000. Siis kirjutame:

SELECT eesnimi, perenimi 
FROM isikud
WHERE sugu='m' AND ranking>2000; 

Vaata videost, kuidas koostada päringud DBeaveris:

Kui soovid oma teadmisi kontrollida, ava test

AVA TEST

Esimeses praktikumis vaatate, mis võib olla SELECT lauses veeruavaldiseks ja ka mõningaid funktsioone, mida saab kasutata nii väljastatavate kirjete piiramiseks kui ka veeruavaldisena. Mõningad enam kasutatavad funktsioonid ka siia:

Funktsioonid päringulauses

Funktsioonid jagunevad mitteagregeeritud ja agregeeritud funktsioonideks. Agregeerivad funktsioonid annavad kõigi päringusse minevate olemite peale ühe tulemuse. Mitteagregeerivad funktsioonid annavad igale funktsioonile vastava kirje kohta ühe tulemuse. Näiteks kui kasutate funktsiooni LENGTH(eesnimi), siis see annab iga kirje puhul selle eesnime pikkuse. LENGTH on mitteagregeeriv funktsioon. Agregeeriv funktsioon võib olla näiteks kõik teatud tunnuse väärtuste summa, nende arv (loendamise tulemus) või aritmeetiline keskmine. Alustame mõnedest olulisematest mitteagregeeritud funktsioonidest. Agregeerimata funktsioon rakendub kirjele, agregeeriv funktsioon korraga kõikidele kirjetele.

Funktsiooni nimi

Kirjeldus

Näidis

EXTRACT(väli FROM veerg)

Väljastab väljana määratletud ajaühiku (aasta, kuu vms) ajalise andmetüübiga tunnusest

SELECT EXTRACT(YEAR FROM synniaeg) 
FROM isikud;

DATE_PART(ajaosa, veerg)

Väljastab ajaosana ('year', 'month' jne) määratletud ajaühiku ajalise andmetüübiga tunnusest

SELECT DATE_PART('year', synniaeg) 
FROM isikud;

AGE(veerg1,veerg2)

Lahutab esimese ajalise andmetüübiga veerust teise ajalise andmetüübiga veeru. Veeru asemel võib kasutada ka current-date näiteks kui soovitakse teada saada hetkevanust.

SELECT AGE(current_date,synniaeg) 
FROM isikud;

LEFT(veerg,n)

Väljastab vasakult nii mitu sümbolit kui on ette antud n

SELECT LEFT(eesnimi,1) 
FROM isikud;

RIGHT(veerg,n)

Väljastab paremalt nii mitu sümbolit kui on ette antud n

SELECT RIGHT(eesnimi,1) 
FROM isikud;

LENGTH()

Väljastab sümbolite arvu

SELECT LENGTH(eesnimi) 
FROM isikud;

SUBSTRING(veerg,n,m)

Väljastab vasakult loendades alates n.-ndast sümbolist m sümbolit. NB! Loendamist alustatskse number 1st!

SELECT SUBSTRING(eesnimi,3,2) 
FROM isikud;

UPPER(argument)

Teisendab argumendiks oleva väärtuse suurtähtedeks

SELECT UPPER(LEFT(eesnimi,1)) 
FROM isikud;

LOWER(argument)

Teisendab argumendiks oleva väärtuse väiketähtedeks

SELECT LOWER(LEFT(eesnimi,1)) 
FROM isikud;

ROUND(väärtus,n)

ümardab väärtuse n kohta pärast koma, kui n on negatiivne, siis näitab see kohti enne koma (näiteks -1 kümnelisteni, -2 sajalisteni jne)

SELECT ROUND(area,0) 
FROM World;

Ja enamkasutatavad agregeerivad funktsioonid:

Funktsiooni nimi

Kirjeldus

Näidis

AVG() leiab aritmeetilise keskmise
SELECT AVG(area) 
FROM World 
WHERE continent='Europa';
COUNT() loendab
SELECT COUNT(name) 
FROM World 
WHERE continent='Europe';
MAX() maksimaalne väärtus
SELECT MAX(area) 
FROM World;
MIN() minimaalne väärtus
SELECT MIN(area) 
FROM World;
SUM() liidab kokku
SELECT SUM(area) 
FROM World 
WHERE continent='Europa';

Kõik PostgreSQL funktsioonid leiad lingilt: https://www.postgresql.org/docs/14/functions.html

Vaata videost, kuidas kasutada päringus erinevaid funktsioone:

Kuidas teha oma andmebaasist backup'iAndmetüübid
  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused