Popis:
Dotaz na data. Výsledek je vždy v tabulkové podobě.
Syntaxe:
SELECT [
TOP lines |
TOP percent
PERCENT ] select_list
[
INTO new_table ]
FROM table_source
[
WHERE search_condition ]
[
ORDER BY order_expression [
ASC |
DESC ] ]
lines |
Omezení počtu získaných řádků. |
percent |
Omezení počtu získaných řádků vyjádřeno procenty (0-100). |
select_list |
Seznam sloupců výsledků dotazu (výrazy oddělené čárkou) nebo znak '*' (znamená všechny sloupce). |
new_table |
Název nové tabulky, vzniklé jako výsledek dotazu. |
table_source |
Seznam tabulek použitých v dotazu (tabulky oddělené čárkou). |
search_condition |
Logický výraz určuje, které řádky zdrojových tabulek zahrnout do výsledku dotazu (pokud se neuvede WHERE, pak to znamená všechny záznamy). |
order_expression |
Určuje sloupec, podle kterého bude výsledek dotazu setříděn. |
ASC |
Třídění bude vzestupně (přednastaveno) |
DESC |
Třídění bude sestupně |
Poznámka:
Syntaxe příkazu SELECT je ve skutečnosti ještě mnohem komplexnější a obsahuje například klauzule GROUP BY a HAVING, která umožňuje provádět skupinové operace (sumace, průměry, počty) nad skupinami záznamů.
Příklad1:
Získá všechny sloupce pro všechy záznamy z tabulky data.
SELECT * FROM data
Příklad2:
Získá všechny sloupce pro prvních 10 záznamů z tabulky data (tříděno podle času).
SELECT TOP 10 * FROM data ORDER BY time
Příklad3:
Získá všechny sloupce pro záznamy splňující zadanou podmínku (čas je větší než 2. července 2003 10:02:00) z tabulky data, výsledek je setříděn vzestupně podle sloupce time. Oba zápisy jsou ekvivalentní (čas s přesností až na ms lze uvést u obou formátů).
SELECT * FROM data WHERE time>'2003-07-02 10:02:00' ORDER BY time
SELECT * FROM data WHERE time>'07/02/2003 10:02:00.000' ORDER BY time
Příklad4:
Získá vybrané sloupce a pro záznamy splňující zadanou podmínku (hodnota 'value' je v rozsahu od 20 do 80) z tabulky data, výsledek je setříděn vzestupně podle sloupce time. Oba zápisy jsou ekvivalentní.
SELECT time, value FROM data WHERE value > 20 AND value < 80 ORDER BY time
SELECT time, value FROM data WHERE value BETWEEN 20 AND 80 ORDER BY time
Příklad5:
Získá počet záznamů, součet hodnot a průměrnou hodnotu pro záznamy splňující zadanou podmínku z tabulky data, kde vypočtené sloupce jsou pojmenovány zadanými názvy.
SELECT COUNT(*) AS Count, SUM(value) AS Suma, AVG(value) AS Average FROM data WHERE value BETWEEN 20 AND 80
Příklad6:
Získá sloupec time a vypočtený sloupec (hodnota 'value' zaokrouhlená na celé číslo) všech záznamů z tabulky data.
SELECT time, ROUND(value,0) AS Round_0 FROM data
Příklad7:
Získá všechny sloupce pro žádný záznam (WHERE 1=0 je vždy neplatné) z tabulky data a uloží výsledek do nové tabulky data_copy.
To znamená, že se zkopíruje pouze struktura tabulky. Klauzule WHERE určuje, zda a které záznamy do nové tabulky zkopírovat.
SELECT * INTO data_copy FROM data WHERE 1=0