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 podatkepogoj
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 aliASC
aliDESC
) - 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 alipolje
aliizraz
alimesto
)
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.