Načrtovanje in razvoj spletnih aplikacij

Poizvedbe - SELECT

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.

  • SELECT določa, katere stolpce ali izraze želimo prikazati.
  • FROM določa tabelo, iz katere beremo podatke.
  • WHERE določa pogoj za izbiro zapisov.
  • ORDER BY določa razvrščanje rezultatov.
  • LIMIT omeji š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_stolpcev je lahko seznam stolpcev ali znak *, ki pomeni vsi stolpci,
  • ime_tabele določa tabelo, iz katere beremo podatke,
  • WHERE določ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 FROM pri 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 WHERE pred FROM.
  • 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.