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φ.
V 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∙