Specifikace dotazu (SQL)

specifikace_dotazu ::= SELECT [ DISTINCT ] v²raz { , v²raz }à 
FROM zobecn∞nß tabulka { , zobecn∞nß tabulka }à 
[ WHERE podmφnka_where ] 
[ GROUP BY v²razg { , v²razg }à ]
[ HAVING podmφnka_having ]

Specifikace dotazu vybere nebo vytvo°φ mno₧inu zßznam∙ ze zßznam∙ uveden²ch zobecn∞n²ch tabulek.

Je-li uvedena vφce ne₧ jedna zobecn∞nß tabulka, provede se mezi nimi operace JOIN, tedy ka₧d² zßznam se spojφ s ka₧d²m. Jinak se pou₧ijφ vÜechny zßznamy zobecn∞nΘ tabulky.

Je-li uvedena podmφnka_where, ze zφskan²ch zßznam∙ se vyberou pouze ty, na nich je tato podmφnka spln∞na.

Je-li uvedena klauzule GROUP BY, zßznamy se rozΦlenφ do skupin tak, ₧e ka₧dß skupina obsahuje zßznamy se stejn²mi hodnotami vÜech v²raz∙g.

Je-li uvedena klauzule HAVING, vyberou se pouze ty skupiny, na nich₧ je spln∞na podmφnka having.

Odpov∞∩ na dotaz zadan² touto specifikacφ tvo°φ sloupce zadanΘ hodnotami v²raz∙ na zφskan²ch zßznamech nebo skupinßch zßznam∙. Aby bylo mo₧no vyhodnotit v²razy nad skupinami, vy₧aduje se, aby ka₧d² v²raz byl bu∩ toto₧n² s n∞kter²m v²razemg nebo aby obsahoval odkazy na sloupce pouze jako argumenty agregaΦnφch funkcφ.

podmφnce where se nesmφ vyskytovat agregaΦnφ funkce (s v²jimkou subdotaz∙). Tyto funkce je mo₧no pou₧φt pouze ve v²razech v klauzuli SELECT a v podmφnce having. Pokud specifikace dotazu neobsahuje GROUP BY, pak se tyto agregaΦnφ funkce poΦφtajφ vzhledem k celΘ odpov∞di na dotaz, jinak se poΦφtajφ zvlßÜ¥ pro ka₧dou skupinu.

Äßdn² v²razg nesmφ b²t multiatributem.

Podrobnosti o sestavenφ podmφnek ve specifikaci dotazu viz podmφnka

Viz takΘ: Sbφrka dotaz∙