Přeskočit na obsah

SELECT

Z Wikipedie, otevřené encyklopedie

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

  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.

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

Další vlastnosti

[editovat | editovat zdroj]

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ů

[editovat | editovat zdroj]

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.

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

[editovat | editovat zdroj]

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

  • LIMIT s jedním parametrem – maximálním počtem vypsaných řádků
  • LIMIT se dvěma parametry – první je maximální počet vypsaných řádků a druhý pozice, od které má výpis začínat (offset)
  • LIMIT v kombinaci s klíčovým slovem OFFSET – místo varianty dvou čísel oddělených čárkou
SELECT jmeno_skladby FROM zebricek_skladeb ORDER BY poslouchanost LIMIT 10 OFFSET 5;

SQL_CALC_FOUND_ROWS

[editovat | editovat zdroj]

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

[editovat | editovat zdroj]
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy