Päringulause SELECT (algus)
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
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 |
---|---|---|
|
Väljastab väljana määratletud ajaühiku (aasta, kuu vms) ajalise andmetüübiga tunnusest |
SELECT EXTRACT(YEAR FROM synniaeg) FROM isikud; |
|
Väljastab ajaosana ('year', 'month' jne) määratletud ajaühiku ajalise andmetüübiga tunnusest |
SELECT DATE_PART('year', synniaeg) FROM isikud; |
|
Lahutab esimese ajalise andmetüübiga veerust teise ajalise andmetüübiga veeru. Veeru asemel võib kasutada ka |
SELECT AGE(current_date,synniaeg) FROM isikud; |
|
Väljastab vasakult nii mitu sümbolit kui on ette antud n |
SELECT LEFT(eesnimi,1) FROM isikud; |
|
Väljastab paremalt nii mitu sümbolit kui on ette antud n |
SELECT RIGHT(eesnimi,1) FROM isikud; |
|
Väljastab sümbolite arvu |
SELECT LENGTH(eesnimi) FROM isikud; |
|
Väljastab vasakult loendades alates n.-ndast sümbolist m sümbolit. NB! Loendamist alustatskse number 1st! |
SELECT SUBSTRING(eesnimi,3,2) FROM isikud; |
|
Teisendab argumendiks oleva väärtuse suurtähtedeks |
SELECT UPPER(LEFT(eesnimi,1)) FROM isikud; |
|
Teisendab argumendiks oleva väärtuse väiketähtedeks |
SELECT LOWER(LEFT(eesnimi,1)) FROM isikud; |
|
ü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:
Tarkvara paigaldamine ja mis faile on vaja esitada kodutööde puhul | Andmetüübid |