Institute of Computer Science
  1. Courses
  2. 2023/24 fall
  3. Introduction to Databases (MTAT.03.105)
ET
Log in

Introduction to Databases 2023/24 fall

  • Kursuse korraldus
  • Loengud
    • Loenguid toetav õpik (autorid: Karl Taal & Piret Luik)
  • Praktikumid
    • Praktikume toetavad materjalid (autorid: Uku Roio & Piret Luik)
  1. Tarkvara paigaldamine
  2. Mis faile on vaja esitada iseseisvate tööde jaoks?
  3. Päringulause (algus)
  4. LIKE operaator
  5. Päringud funktsioonidega
  6. Päringulause (jätk)
  7. Päringud mitmest tabelist
  8. Tabelite loomine. Kirjete lisamine ja muutmine
  9. Tabelite muutmine
  10. Vaated
  11. Kordamine
  • Paaristöö: Oma mudel
  • Viited


Päringud mitmest tabelist

Siiani oleme vaadanud näiteid, kus on päringud ühe tabeli põhjal, kuid erinevatest tabelite andmeid on võimalik kombineerida. Võimalik on kombineerida ükskõik kui palju tabeleid seostades need päringus. Nii saab luua palju kasulikke päringuid, kui tabelite vahel on mingi seos. Näiteks kui teame, et lemmikloomad on seotud omanikuga välisvõtme omanik_id abil, siis saame päringuga vaadata, millised loomad kuuluvad millisele omanikule.

SELECT omanikud.eesnimi, omanikud.perenimi, lemmikloomad.nimi
FROM lemmikloomad, omanikud
WHERE lemmikloomad.omanik_id=omanikud.id;

SELECT lause esimeses osas täpsustame, milliseid veerge tahame pärida. Näites näed, et veergude juures on täpsustatud ka, millisest tabelist veerg pärit on (kirjapilt tabelinimi.veerunimi). Üldiselt ei ole vaja seda märkida, vaid saab ka lihtsalt veeru nime välja kirjutada, aga mõnikord on seda selguse mõttes hea teha, kui kahel tabelil on näiteks sama nimega veerg. Lause FROM osas täpsustame, millistest tabelitest me infot soovime saada. Lõpuks tuleb WHERE osas märkida, kuidas need tabelid omavahel seotud on, mille tulemusena ühendati kõik lemmikloomad omanikega. Siin on alamtabelil tunnus omanik_id ning ülemtabelil tunnus id. Kuna aga id on igas tabelis, siis omanikud.id peab olema kindlasti kirjutatud kasutades nii tabeli- kui ka veerunime.

Kõiki eelpoolvaadatud SELECT lauseosi, funktsioone ja piiranguid saab ka selliste päringute juures kasutada. Näiteks

SELECT eesnimi, perenimi, COUNT(nimi) AS arv
FROM omanikud, lemmikloomad
WHERE lemmikloomad.omaniku_id=omanikud.id
GROUP BY eesnimi, perenimi
HAVING COUNT(nimi)>2
ORDER BY 3 DESC;

Selle lausega me siis väljastame omanike eesnimed ja perenimed ning nende loomade arvu juhul kui neil on enam kui 2 looma. Tulemustabel järjestatakse kahanevalt.

Üldjuhul saab jälgida järgnevaid punkte mitut tabelit siduvate päringute loomiseks:

  • SELECT lause esimenes osas pane kirja otsitavad tunnused (vajadusel koos funktsioonidega).
  • FROM osas on kirjas kõik tabelid, mille veerunimed on päringulauses (NB! vaata ka, kas pole piirangutes mõnda tunnust teisest tabelist).
  • WHERE osas pane alguses kirja, kuidas tabelid omavahel seotud on. Ülemtabeli primaarvõti on seotud alamtabeli välisvõtmega. Neil peab olema sama andmetüüp.
  • Vajadusel lisa piiranguid.
  • Vajadusel lisa teisi päringulause osi.
  • Kontrolli veel üle, kas kõik tabelid said kirja pandud ning seostatud.
Päringulause (jätk)Tabelite loomine. Kirjete lisamine ja muutmine
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment