Načrtovanje in razvoj spletnih aplikacij

Poizvedbe - SELECT

SELECT stavek nam vrne podatke iz tabel.

Osnovna oblika stavka SELECT

Splošna oblika je:

 SELECT seznam_polj FROM seznam_tabel [WHERE pogoj]; 
  • seznam_polj je lahko spisek stolpcev oz. polj, ali * ki pomeni »vsi stolpci«
  • seznam_tabel označuje tabele iz katerih črpamo podatke
  • pogoj pa določi enega ali več pogojev, ki morajo biti izpolnjeni. WHERE stavek lahko izpustimo.

Stavke sicer ni potrebno zaključevati s podpičjem, kot je prikazano zgoraj, razen če delamo v ukaznem načinu oz. če pišemo zaporedje večih ukazov.

Velike in male črke

Občutljivost na velike in male črke je odvisna od večih faktorjev med drugim od vrste elementov in operacijskega sistema. Tako so ključne besede in aliasi za tabele v vseh primerih neobčutljivi na velikost znakov, medtem ko so bazni objekti tabele in podatkovne zbirke občutljivi v UNIX-u, v Windows-ih pa ne.

Naslednji stavki so tako ekvivalentni:

 SELECT version(); 
 select version(); 
 SeLeCt version();

Funkcija version() nam vrne oznako različice MySQL-a, ki ga uporabljamo:

version() 5.5.16

V zadnjem primeru smo videli SELECT stavek brez ključne besede FROM. To lahko storimo v primeru, da tabele ne potrebujemo. Uporabimo lahko tudi trivialno oz. prazno tabelo z imenom DUAL.

SELECT version() FROM DUAL;

Aritmetični operatorji

V seznamu polj lahko uporabimo tudi aritmetične operatorje (+, -, * in /) in oklepaje:

 SELECT 5+7; 
 SELECT cena*(1+ddv/100) FROM cenik;

Splošna sintaksa stavka SELECT

Stavek SELECT si oglejmo bolj podrobno:

 SELECT [ALL | DISTINCT | DISTINCTROW ] polje_1 [AS] alias_1 [, polje_2 ...] 
 [FROM ime_tabele [WHERE pogoj] [GROUP BY {polje | izraz | mesto} [ASC | DESC], ... 
 [WITH ROLLUP]] [HAVING pogoj] [ORDER BY {polje | izraz | mesto} [ASC | DESC], ...] 
 [LIMIT {[odmik,] število_vrstic | število_vrstic OFFSET odmik}] 
 [INTO OUTFILE 'ime_datoteke' [CHARACTER SET nabor_znakov] izvozne_možnosti | 
 INTO DUMPFILE 'ime_datoteke' | INTO ime_spremenljivke [, ime_spremenljivke]]

Kaj pomenijo oznake v stavku:

  • pokončna črta "|" pomeni da uporabimo eno izmed možnosti (ASC | DESC pomeni da napišemo ali ASC ali DESC)
  • oglati okepaji "[]" pomenijo neobvezno vsebino ([WHERE pogoj] pomeni, da vsebino oglatih oklepajev tj. "WHERE pogoj" lahko izpustimo)
  • zaviti oklepaji "{}" pomenijo obvezno vsebino ({polje | izraz | mesto} pomeni, da moramo vnesti ali polje ali izraz ali mesto)

Kaj pomeni vrstica:

 [ORDER BY {polje | izraz | mesto} [ASC | DESC], ...]

Zunanji oglati oklepaj pomeni, da lahko vse skupaj izpustimo. {polje | izraz | mesto} pomeni, da je obvezno vpisati ali polje ali izraz ali mesto. [ASC | DESC] pomeni, da lahko pišemo ali ASC ali DESC ali pa vse skupaj izpustimo. Vejica in ... (, ...) pa pomeni, da lahko vnesemo več takih zaporedij, torej da lahko razvrščamo po večih stoplcih.

ALL | DISTINCT | DISTINCTROW

ALL je privzeto in ponavadi ne pišemo, pomeni pa da vrne vse vrstice tudi podvojene, DISTINCT izloči podvojene vrstice. DISTINCTROW je sinonim za DISTINCT.

 SELECT DISTINCT ime FROM dijaki;

Zgornji stavek vrne samo različna imena dijakov.

AS (alias)

Alias je prislov, ki pomeni drugače povedano, z drugim imenom, po domače, kot nam razloži SSKJ. V SQL-u s pomočjo aliasov lahko preimenujemo stolpce. Besedico AS lahko tudi izpustimo.

 SELECT DISTINCT ime AS različna_imena FROM dijaki; 

Besedico AS lahko tudi izpustimo. Alias določi že presledek za stolpcem.

 SELECT DISTINCT ime različna_imena FROM dijaki;

Z aliasom preimenovan stolpec lahko uporabimo v stavkih GROUP BY, ORDER BY in HAVING.

FROM

Za besedico from sledijo imena ene ali večih tabel.

 SELECT * FROM dijaki, krožki;

Tudi tabelam lahko določimo aliase.

 SELECT * FROM dijaki d, krožki k;

Običajno za aliase tabel uporabimo kar začetne črke tabel.