Microsoft SQL Server
Instrukcja SELECT
Szukaj…
Wprowadzenie
W SQL instrukcje SELECT
zwracają zestawy wyników ze zbiorów danych, takich jak tabele lub widoki. Instrukcje SELECT
mogą być używane z różnymi innymi klauzulami, takimi jak WHERE
, GROUP BY
lub ORDER BY
aby dodatkowo zawęzić pożądane wyniki.
Podstawowy WYBIERZ z tabeli
Wybierz wszystkie kolumny z jakiejś tabeli (w tym przypadku tabeli systemowej):
SELECT *
FROM sys.objects
Lub wybierz tylko niektóre konkretne kolumny:
SELECT object_id, name, type, create_date
FROM sys.objects
Filtruj wiersze za pomocą klauzuli WHERE
Klauzula WHERE filtruje tylko te wiersze, które spełniają pewien warunek:
SELECT *
FROM sys.objects
WHERE type = 'IT'
Sortuj wyniki za pomocą ORDER BY
Klauzula ORDER BY sortuje wiersze w zwróconym zestawie wyników według jakiejś kolumny lub wyrażenia:
SELECT *
FROM sys.objects
ORDER BY create_date
Wynik grupy za pomocą GROUP BY
Klauzula GROUP BY grupuje wiersze według pewnej wartości:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
Możesz zastosować jakąś funkcję dla każdej grupy (funkcja agregująca), aby obliczyć sumę lub liczbę rekordów w grupie.
rodzaj | do |
---|---|
SQ | 3) |
S. | 72 |
TO | 16 |
PK | 1 |
U | 5 |
Filtruj grupy za pomocą klauzuli HAVING
Klauzula HAVING usuwa grupy niespełniające warunku:
SELECT type, count(*) as c
FROM sys.objects
GROUP BY type
HAVING count(*) < 10
rodzaj | do |
---|---|
SQ | 3) |
PK | 1 |
U | 5 |
Zwracane tylko pierwsze N wierszy
Klauzula TOP zwraca tylko pierwsze N wierszy w wyniku:
SELECT TOP 10 *
FROM sys.objects
Podział na strony przy użyciu funkcji OFFSET FETCH
Klauzula OFFSET FETCH jest bardziej zaawansowaną wersją TOP. Umożliwia pominięcie wierszy N1 i zrobienie kolejnych wierszy N2:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY
Możesz użyć opcji PRZESUNIĘCIE bez pobierania, aby pominąć pierwsze 50 wierszy:
SELECT *
FROM sys.objects
ORDER BY object_id
OFFSET 50 ROWS
WYBIERZ bez FROM (bez souce danych)
Instrukcja SELECT może być wykonana bez klauzuli FROM:
declare @var int = 17;
SELECT @var as c1, @var + 2 as c2, 'third' as c3
W takim przypadku zwracany jest jeden wiersz z wartościami / wynikami wyrażeń.