Stavek SELECT uporabljamo za pridobivanje podatkov iz podatkovne baze. Z njim lahko izberemo vse stolpce, samo določene stolpce, izračunamo vrednosti, filtriramo zapise, odstranimo podvojene rezultate, razvrstimo izpis in omejimo število vrnjenih vrstic.
Pri začetnem delu je pomembno, da stavek SELECT razumemo kot vprašanje podatkovni bazi: katere podatke želimo, iz katere tabele jih želimo in pod katerimi pogoji naj bodo izbrani.
Pomni: Stavek SELECT podatkov ne spreminja, ampak jih samo bere. Zato je primeren za preverjanje podatkov in za učenje osnovnih poizvedb.
Pri učenju je priporočljivo ključne besede pisati z velikimi črkami, imena tabel in stolpcev pa dosledno in pregledno. Tako je poizvedba lažje berljiva.
Vsebina strani
Osnovna pravila
Stavek SELECT je sestavljen iz več delov. Nekateri so obvezni, drugi pa so neobvezni in jih dodamo, ko želimo poizvedbo natančneje omejiti ali urediti.
SELECTdoloča, katere stolpce ali izraze želimo prikazati.FROMdoloča tabelo, iz katere beremo podatke.WHEREdoloča pogoj za izbiro zapisov.ORDER BYdoloča razvrščanje rezultatov.LIMITomeji število vrnjenih vrstic.- Stavek se običajno zaključi s podpičjem
;.
Pozor: Znak * pomeni, da želimo izpisati vse stolpce. Pri učenju je to priročno, pri večjih tabelah pa je pogosto bolje navesti samo stolpce, ki jih res potrebujemo.
Osnovna oblika stavka SELECT
Osnovna oblika stavka je:
SELECT seznam_stolpcev
FROM ime_tabele
[WHERE pogoj];
seznam_stolpcevje lahko seznam stolpcev ali znak*, ki pomeni vsi stolpci,ime_tabeledoloča tabelo, iz katere beremo podatke,WHEREdoloča pogoj, ki mora biti izpolnjen.
Primeri osnovnih poizvedb:
SELECT * FROM dijaki;
SELECT ime, priimek
FROM dijaki;
SELECT ime, priimek
FROM dijaki
WHERE oddelek = '3a';
Izbira stolpcev
Če želimo prikazati vse stolpce, uporabimo znak *. Če potrebujemo samo določene podatke, stolpce naštejemo po imenu.
SELECT *
FROM dijaki;
Preglednejša poizvedba pogosto izbere samo potrebne stolpce:
SELECT ime, priimek, email
FROM dijaki;
Pomni: Pri izpisu iz večje tabele je bolje navesti konkretne stolpce kot uporabiti *. Tako je poizvedba jasnejša in lahko tudi učinkovitejša.
Filtriranje podatkov z WHERE
Pogoj WHERE uporabimo, kadar želimo izbrati samo tiste zapise, ki izpolnjujejo določen pogoj.
SELECT ime, priimek
FROM dijaki
WHERE oddelek = '3a';
Pri pogojih lahko uporabljamo primerjalne operatorje, na primer =, <, >, <=, >= in <>.
SELECT ime, priimek, povprecje
FROM dijaki
WHERE povprecje >= 4.5;
Velike in male črke
Ključne besede, kot so SELECT, FROM in WHERE, lahko pišemo z velikimi ali malimi črkami. Zaradi boljše preglednosti jih običajno pišemo z velikimi črkami.
SELECT VERSION();
select version();
SeLeCt version();
Funkcija VERSION() vrne oznako različice strežnika MySQL ali MariaDB.
Pozor: Čeprav ključne besede pogosto niso občutljive na velikost črk, so lahko imena tabel in stolpcev v nekaterih okoljih odvisna od nastavitev sistema. Zato je priporočljivo uporabljati dosleden zapis.
SELECT brez tabele in aritmetični izrazi
V nekaterih primerih lahko uporabimo SELECT tudi brez prave tabele, na primer pri funkcijah ali izračunih.
SELECT VERSION();
SELECT 5 + 7;
Možna je tudi uporaba navidezne tabele DUAL:
SELECT VERSION() FROM DUAL;
V stavku SELECT lahko uporabljamo tudi aritmetične operatorje +, -, * in /.
SELECT 5 + 7;
SELECT cena * (1 + ddv / 100)
FROM cenik;
Pogoste možnosti pri SELECT
Pri stavku SELECT pogosto uporabljamo dodatke, s katerimi rezultat naredimo preglednejši ali natančnejši.
DISTINCT
DISTINCT odstrani podvojene vrstice v rezultatu.
SELECT DISTINCT ime
FROM dijaki;
Zgornji primer vrne samo različna imena iz tabele dijaki.
AS – alias
Z besedo AS lahko stolpcu ali izrazu določimo nadomestno ime. To je uporabno za razumljivejši izpis.
SELECT ime AS razlicna_imena
FROM dijaki;
Besedo AS lahko v nekaterih primerih tudi izpustimo:
SELECT ime razlicna_imena
FROM dijaki;
FROM
Za besedo FROM napišemo ime tabele, iz katere beremo podatke.
SELECT *
FROM dijaki;
Tabeli lahko določimo tudi alias. To je posebej uporabno pri daljših poizvedbah in povezovanju tabel.
SELECT d.ime, d.priimek
FROM dijaki AS d;
ORDER BY
Z ukazom ORDER BY rezultate razvrstimo. Privzeto je razvrščanje naraščajoče, kar lahko izrecno zapišemo z ASC. Za padajoče razvrščanje uporabimo DESC.
SELECT ime, priimek
FROM dijaki
ORDER BY priimek ASC;
SELECT ime, priimek
FROM dijaki
ORDER BY priimek DESC;
LIMIT
Z ukazom LIMIT omejimo število vrnjenih vrstic. To je uporabno pri pregledovanju večjih tabel.
SELECT *
FROM dijaki
LIMIT 5;
Primerjava dodatkov pri SELECT
Različni dodatki pri stavku SELECT imajo različne naloge.
| Dodatek | Namen | Primer |
|---|---|---|
WHERE |
Izbere samo zapise, ki ustrezajo pogoju. | WHERE oddelek = '3a' |
DISTINCT |
Odstrani podvojene vrstice v rezultatu. | SELECT DISTINCT ime |
AS |
Določi nadomestno ime stolpca ali izraza. | ime AS ime_dijaka |
ORDER BY |
Razvrsti rezultate. | ORDER BY priimek ASC |
LIMIT |
Omeji število vrnjenih vrstic. | LIMIT 5 |
Priporočila
- Ključne besede piši z velikimi črkami, da je poizvedba preglednejša.
- Namesto
*raje navedi konkretne stolpce, kadar ne potrebuješ vseh podatkov. - Za lažje razumevanje daljših poizvedb uporabi prelome vrstic.
- Pri izračunanih stolpcih uporabi alias z
AS. - Pri večjih tabelah uporabi
LIMIT, kadar želiš pregledati samo nekaj zapisov. - Pri razvrščanju uporabi jasno ime stolpca ali alias.
Pogoste napake
- Manjkajoča beseda
FROMpri poizvedbi iz tabele. - Napačno zapisano ime tabele ali stolpca.
- Uporaba
*tudi takrat, ko potrebujemo samo nekaj stolpcev. - Manjkajoči narekovaji pri besedilnih vrednostih v pogoju
WHERE. - Zamenjava vrstnega reda delov stavka, na primer
WHEREpredFROM. - Nejasni aliasi, zaradi katerih je izpis težje razumljiv.
- Razvrščanje po stolpcu, ki v poizvedbi ni jasno določen.
Pri razvrščanju z ORDER BY je bolje uporabiti ime stolpca ali alias, ne pa številke položaja stolpca v izpisu. Tak zapis je razumljivejši in manj občutljiv na spremembe poizvedbe.