SQL příkaz SELECT vrací množinu záznamů z jedné a nebo více tabulek.

Syntaxe

  SELECT
   [ALL | DISTINCT]
   {[tabulka. | alias. | pohled.]{* | sloupec | sloupec AS alias}
   | AVG([tabulka. | alias. | pohled.]<sloupec>) [AS <alias>]
   | MIN([tabulka. | alias. | pohled.]<sloupec>) [AS <alias>]
   | MAX([tabulka. | alias. | pohled.]<sloupec>) [AS <alias>]
   | COUNT([tabulka. | alias. | pohled.]<* | sloupec>) [AS <alias>]
   }[,...n]
   
   [INTO jméno_nové_tabulky]
   
   FROM <tabulka> [AS <alias>][,... n]
   
   [[INNER | FULL] JOIN <tabulka> ON <spojovaci podminka>
   | <LEFT | RIGHT> OUTER JOIN <tabulka> ON <spojovaci podminka>
   | CROSS JOIN <sloupce>
   [AS <alias>] 
   [,... n]]
   
   [WHERE <podmínky>
    | <sloupec> <operator> <sloupec | hodnota> 
    | <sloupec> <operator> <sloupec | hodnota> <AND | OR | NOT> <sloupec> <operator> <sloupec | hodnota> 
    | <sloupec> BETWEEN <hodnota> AND <hodnota>
    | <sloupec> LIKE <regularni vyraz>
    | <sloupec> IN <vycet hodnot>
    | <sloupec | vyraz> <operator> ANY | SOME (poddotaz)
    | EXISTS (poddotaz)]

   [GROUP BY <nazev sloupce>[,... n]]
   [HAVING <omezujici podminka postavena na vysledcich klauzule GROUP BY>]
   [ORDER BY <sloupec>[,... n] [ASC | DESC]]

[UNION <SELECT dotaz>]

Míra implementace SQL dotazů se liší u každého SŘBD, proto je třeba mít při psaní konkrétních dotazů na zřeteli konkrétní SŘBD, na kterém bude dotaz prováděn. Bližší informace naleznete v referenčních manuálech.

Příklad

 SELECT id, zakaznik, cena FROM smlouvy WHERE cena>10000 AND se_slevou=1 ORDER BY cena DESC

Další vlastnosti

DISTINCT

Klíčové slovo DISTINCT (někdy používáno DISTINCTROW) z výpisu odstraní záznamy, které se v dané hodnotě pole opakují. Výsledkem pro daný sloupec bude seznam všech hodnot (vyhovující případné podmínce výpisu); každé zastoupené jen jednou. SELECT s DISTINCT vypisuje z logických důvodů většinou jen jedno pole.

Omezení počtu zobrazených řádků

Databázové stroje většinou umožňují pomocí nějakého klíčového slova v SQL omezit počet vybraných řádků na určitou hodnotu.

TOP

Databáze Microsoft Access, MSSQL mají klauzuli TOP, která se vkládá hned za SELECT

SELECT TOP 10 jmeno_skladby FROM zebricek_skladeb ORDER BY poslouchanost DESC;

LIMIT a OFFSET

Databáze MySQL, PostgreSQL mají klauzuli LIMIT, která kromě maximálního počtu zobrazených řádků umožňuje určit i od jakého místa (ofsetu) z výsledných řádků dotazu (pomyslného celkového výběru) má vracení výsledku začít. Například dotaz

SELECT jmeno_skladby FROM zebricek_skladeb ORDER BY poslouchanost LIMIT 5,10;

by zobrazil záznamy na 5. až 15. místě. Je možné použít

SELECT jmeno_skladby FROM zebricek_skladeb ORDER BY poslouchanost LIMIT 10 OFFSET 5;

SQL_CALC_FOUND_ROWS

Konkrétně MySQL navíc podporuje klíčové slovo SQL_CALC_FOUND_ROWS (není součástí žádného SQL standardu), které se umisťuje za SELECT a způsobí, že databázový stroj si i přes omezení dané klíčovým slovem LIMIT ve výběrovém dotazu uloží celkový počet záznamů splňujících podmínku v klauzuli WHERE (pokud je zadaná) a ten pak může poslat jako výsledek dotazu:

SELECT FOUND_ROWS()

Výhodou je, že pro zjištění celkového počtu řádků nemusí být spouštěn další dotaz.

Externí odkazy

Pahýl Tento článek je příliš stručný nebo postrádá důležité informace.Pomozte Wikipedii tím, že jej vhodně rozšíříte. Nevkládejte však bez oprávnění cizí texty.