Opis:
Zapytanie o dane. Wynik jest zawsze w formie tabelkowej.
Składnia:
SELECT [
TOP lines |
TOP percent
PERCENT ] select_list
[
INTO new_table ]
FROM table_source
[
WHERE search_condition ]
[
ORDER BY order_expression [
ASC |
DESC ] ]
lines |
Ograniczenie ilości uzyskanych wierszy. |
percent |
Ograniczenie ilości uzyskanych wierszy określone procentowo (0-100). |
select_list |
Lista kolumn wyników zapytań (wyniki oddzielone przecinkiem) lub znak '*' (oznacza wszystkie kolumny). |
new_table |
Nazwa nowej tabeli, powstałej na wynik zapytania. |
table_source |
Lista tabelek zastosowanych w zapytaniu (tabeli oddzielone przecinkiem). |
search_condition |
Wyrażenie logiczne określa, które wiersze źródłowej tabeli mają być w zapytaniu (jeżeli nie zostanie określone WHERE, wtedy to znaczy wszystkie rekordy). |
order_expression |
Określa kolumnę, według której zostanie uszeregowany wynik zapytania. |
ASC |
Sortowanie będzie rosnąco (domyślnie) |
DESC |
Sortowanie będzie malejąco |
Notatka:
Składnia polecenia SELECT w rzeczywistości jest bardziej kompleksowa oraz zawiera na przykład klauzule GROUP BY oraz HAVING, która umożliwia wykonywać operacje grupowe (sumy, średnie, ilości) ponad grupami rekordów.
Przykład1:
Uzyska wszystkie kolumny dla wszystkich rekordów z tabeli data.
SELECT * FROM data
Przykład2:
Uzyska wszsystkie kolumny dla pierwszych 10 rekordów z tabeli data (uszeregowane według czasu).
SELECT TOP 10 * FROM data ORDER BY time
Przykład3:
Uzyska wszystkie kolumny dla rekordów spełniających określony warunek (czas jest większe niż 2. lipca 2003 10:02:00) z tabeli data, wynik jest uszeregowany rosnąco według kolumny time. Obydwa zapisy są ekwiwalentne (czas z dokładnoscią aż do ms można określić w obu formatach).
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
Przykład4:
Uzyska wybrane kolumny oraz dla rekordów spełniających okeślony warunek (wartość 'value' znajduje się w zakresie od 20 do 80) z tabeli data, wynik jest uszeregowany rosnąco według kolumny time. Obydwa zapisy są ekwiwalentne.
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
Przykład5:
Uzyska ilość rekordów, sumę wartości oraz średnią wartość dla rekordów spełniających warunek z tabeli data, gdzie obliczone kolumny posiadają określone nazwy.
SELECT COUNT(*) AS Count, SUM(value) AS Suma, AVG(value) AS Average FROM data WHERE value BETWEEN 20 AND 80
Przykład6:
Uzyska kolumnę time oraz obliczoną kolumnę (wartość 'value' zaokrąglona do liczby całkowitej) wszystkich rekordów z tabeli data.
SELECT time, ROUND(value,0) AS Round_0 FROM data
Przykład7:
Uzyska wszystkie kolumny dla żadnych rekordów (WHERE 1=0 jest zawsze nieprawda) z tabeli data i zapisze wynik do nowej tabeli data_copy.
To znaczy, że zostanie skopiowana tylko struktura tabeli. Klauzula WHERE określa, czy oraz które rekordy należy skopiować do nowej tabeli.
SELECT * INTO data_copy FROM data WHERE 1=0